Функция SetGraphicsMode (wingdi.h)

Функция SetGraphicsMode задает графический режим для указанного контекста устройства.

Синтаксис

int SetGraphicsMode(
  [in] HDC hdc,
  [in] int iMode
);

Параметры

[in] hdc

Дескриптор контекста устройства.

[in] iMode

Графический режим. Этот параметр может принимать одно из указанных ниже значений.

Значение Значение
GM_COMPATIBLE
Задает графический режим, совместимый с 16-разрядной версией Windows. Это режим по умолчанию. Если это значение указано, приложение может изменять преобразование мира на устройство только путем вызова функций, которые задают экстенты и источники окна и окна просмотра, но не с помощью SetWorldTransform или ModifyWorldTransform; Вызовы этих функций завершатся ошибкой. Примерами функций, которые задают экстенты и источники окна и окна просмотра, являются SetViewportExtEx иSetWindowExtEx.
GM_ADVANCED
Задает расширенный графический режим, разрешающий преобразования мира. Это значение необходимо указать, если приложение будет задавать или изменять преобразование мира для указанного контекста устройства. В этом режиме все рисунки, включая текстовые выходные данные, полностью соответствуют преобразованию "мир в устройство", указанному в контексте устройства.

Возвращаемое значение

Если функция выполнена успешно, возвращается старое графическое значение.

Если функция выполняется неудачно, возвращается нулевое значение.

Комментарии

Существует три области, в которых графический вывод отличается в зависимости от графического режима:

  1. Вывод текста. В режиме GM_COMPATIBLE вывод текста TrueType (или векторного шрифта) ведет себя так же, как и вывод текста растрового шрифта по отношению к преобразованиям мира на устройство в контроллере домена. Текст TrueType всегда записывается слева направо и справа вверх, даже если остальная часть графики будет перевернута на оси x или y. Масштабируется только высота текста TrueType (или векторного шрифта). Единственный способ написать текст, который не является горизонтальным в режиме GM_COMPATIBLE, — указать ненулевой escapement и ориентацию для логического шрифта, выбранного в этом контексте устройства.

    В режиме GM_ADVANCED вывод текста TrueType (или векторного шрифта) полностью соответствует преобразованию "мир на устройство" в контексте устройства. Растровые шрифты имеют только ограниченные возможности преобразования (растягивание по некоторым целочисленным факторам). Интерфейс графического устройства (GDI) пытается получить наилучшие выходные данные с помощью растровых шрифтов для нетривиальных преобразований.

  2. Исключение прямоугольника. Если задан режим GM_COMPATIBLE графики по умолчанию, система исключает нижние и крайние правые края при рисовании прямоугольников.

    Графический режим GM_ADVANCED требуется, если приложения хотят рисовать прямоугольники в нижнем правом углу.

  3. Рисование дугой. Если задан режим графики по умолчанию GM_COMPATIBLE, GDI рисует дуги с использованием текущего направления дуги в пространстве устройства. В соответствии с этим соглашением дуги не учитывают преобразования страницы на устройство, которые требуют переворачивания вдоль оси X или Y.

    Если задан режим GM_ADVANCED графики, GDI всегда рисует дуги в направлении против часовой стрелки в логическом пространстве. Это эквивалентно утверждению о том, что в графическом режиме GM_ADVANCED как сами точки управления дугой, так и дуги полностью соответствуют преобразованию мира в устройство контекста устройства.

Примеры

Пример см. в разделе Использование координатных пространств и преобразований.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header wingdi.h (включая Windows.h)
Библиотека Gdi32.lib
DLL Gdi32.dll

См. также раздел

Функции координатного пространства и преобразования

Общие сведения о координатных пространствах и преобразованиях

CreateDC

GetArcDirection

GetDC

GetGraphicsMode

ModifyWorldTransform

SetArcDirection

SetViewportExtEx

SetViewportExtent

SetWindowExtEx

SetWindowExtent

SetWorldTransform