Функция SetGraphicsMode

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

Синтаксис

int SetGraphicsMode(
  HDC hdc,    // дескриптор контекста устройства
  int iMode   // графический режим
);

Параметры

hdc

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

iMode

[in] Определяет графический режим. Этот параметр может быть одним из нижеследующих значений.

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

Windows 95/98/Me: Значение GM_ADVANCED не поддерживается. Когда проигрывается улучшенный метафайл, система пытается сделать, чтобы улучшенные метафайлы выглядели одинаково, как это делается в Windows NT/2000/XP. Чтобы достичь этого, система может моделировать режим GM_ADVANCED, проигрывая записи указанного метафайла.

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

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

Если функция завершается ошибкой, возвращаемое значение - нуль. Чтобы получить дополнительную информацию об ошибке, вызовите GetLastError.

Замечания

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

  1. Вывод текста: В режиме GM_COMPATIBLE, вывод в TrueType (или векторным шрифтом) текста, по отношению к преобразованию мирового пространства в пространство устройства в контексте устройства (DC), ведет себя почти таким же образом, как и вывод текста растрового шрифта. Текст TrueType всегда пишется слева направо и продвигается в правую сторону, даже тогда, когда остальная часть графики будет отображаться зеркально по оси X или Y. Только высота текста TrueType (или векторного шрифта) масштабируется. Единственный способ записать текст в режиме GM_COMPATIBLE, который не горизонтален, состоит в том, чтобы определить спуск, на позицию равную одному знаку и ориентацию для логического шрифта,отличную от нуля, выбранную в этом контексте устройства.

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

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

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

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

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

Демонстрационный код

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

Смотри также

Обзор Координатные пространства и преобразования, Функции, используемые координатными пространствами и преобразованиями, CreateDC, GetArcDirection, GetDC, GetGraphicsMode, ModifyWorldTransform, SetArcDirection, SetViewportExtEx, SetWindowExtEx, SetWorldTransform

Размещение и совместимость SetGraphicsMode

К Windows XP Да 
л Windows 2000 Professional Да
и Windows NT Workstation Да версии 3.1 и старше
е Windows Me Да
н Windows 98 Да
т Windows 95 Да
 
С Windows Server 2003 Да
е Windows 2000 Server Да
р Windows NT Server Да
в    
е    
р    
Используемая библиотека Gdi32.lib
Используемая DLL -
 Заголовочный файл  
- объявлено в Wingdi.h
 - включено в Windows.h
 Unicode Нет
 Замечания по платформе Не имеется

 

Назад в оглавление
На главную страницу
В оглавление справки

Hosted by uCoz