Функция SetICMMode заставляет технологию Управление цветом изображения (ICM) включится, отключится или сделать запрос для данного контекста устройства (DC).
Синтаксис
int WINAPI SetICMMode( HDC hDC, int iEnableICM ); |
hDC
Идентифицирует дескриптор контекста устройства.
iEnableICM
Включает и выключает управление цветом изображения. Этот параметр может получить одно из нижеследующих постоянных значений.
Константа | Предназначение |
---|---|
ICM_ON | Включает управление цветом. Выключает коррекцию цвета старого стиля полутонов. |
ICM_OFF | Выключает управление цветом. Включает коррекцию цвета старого стиля полутонов. |
ICM_QUERY | Делает запрос текущего состояния управления цветом. |
ICM_DONE_OUTSIDEDC | Выключает управление цветом в контексте устройства (DC). В среде Windows 2000, также выключает коррекцию цвета старого стиля полутонов. Не поддерживается в среде Windows 95. |
Если эта функция завершается успешно, возвращаемое значение - ненулевое значение.
Если эта функция завершается ошибкой, возвращаемое значение - нуль.
Если определяется флажок ICM_QUERY, а функция завершается успешно, возвращается ненулевое значение - ICM_ON или ICM_OFF, чтобы указать текущий режим.
Если система не может найти, что профиль цвета ICC соответствует состоянию устройства, SetICMMode завершает работу из-за ошибки и возвращает нуль.
Как только технология Управления цветом изображения (ICM) включается для контекста устройства (DC), цвета, которые пересылаются в контекст устройства (DC), используются большинством функций API Win32, чтобы подобрать цвет. Основным исключением являются - функции BitBlt и StretchBlt. Предполагается, что когда выполняется перемещение блока битов (блитирование) из одного контекста устройства (DC) в другой, эти два контекста устройства уже совместимы и не нуждаются ни в какой коррекции цвета. Если дело обстоит не так, коррекция цвета может выполниться. Специально, если, как источник для блитирования, используется независимый от устройства точечный рисунок (DIB), и блитирование выполняется в контекст устройства (DC), которому разрешили использовать технологию Управления цветом изображения (ICM), то подбор цвета выполнится. Если этого не то, что Вы хотите, выключите технологию ICM для целевого контекста устройства (DC) при помощи вызова SetICMMode перед тем, как вызвать функцию BitBlt или StretchBlt.
Если функция CreateCompatibleDC используется для того, чтобы создать точечный рисунок в контексте устройства (DC), то для точечного рисунка имеется возможность, что цвет подбирается дважды: первый раз, когда он создается, и второй раз, когда выполняется блитирование. Причина в том, что точечный рисунок в контексте устройства (DC), созданном функцией CreateCompatibleDC получает текущую кисть, перья и палитру исходного контекста устройства (DC). Однако, ICM будет заблокирована по умолчанию для нового контекста устройства. Если технология ICM позже будет включена для нового контекста устройства (DC) при помощи использования функция SetICMMode, то будет делаться коррекция цвета. Чтобы воспрепятствовать двойной коррекции цвета при использовании функции CreateCompatibleDC, используйте функцию SetICMMode, чтобы выключить технологию Управления цветом изображения (ICM) для исходного контекста устройства (DC) прежде, чем будет вызвана функция CreateCompatibleDC.
Когда совместимый контекст устройства (DC) создается из контекста устройства принтера (см. CreateCompatibleDC), по умолчанию всегда выполняется подбор цвета, если он допускается для контекста устройства принтера. Профиль цвета по умолчанию для принтера используется тогда, когда в контекст устройства (DC) принтера выполняется блитирование, используя функции SetDIBitsToDevice или StretchDIBits. Если это не то, чего Вы добивайтесь, выключите технологию ICM для контекста устройства (DC) принтера при помощи вызова SetICMMode перед вызовом SetDIBitsToDevice или StretchDIBits.
Кроме того, когда происходит печать через контекст устройства (DC) принтера со включенной технологией ICM, функция SetICMMode должна вызываться после каждого вызова функции StartPage, чтобы возвратиться в ICM. Это потому, что функция StartPage вызывает функции RestoreDC и SaveDC, которые отключают ICM от DC принтера.
Обзор
Основные понятия управления цветом,
Функции, используемые ICM,
BitBlt, StretchBlt,
CreateCompatibleDC,
SetDIBitsToDevice,
StretchDIBits,
Размещение и совместимость SetICMMode |
||
К | Windows XP | Да |
л | Windows 2000 Professional | Да |
и | Windows NT Workstation | Нет |
е | Windows Me | Да |
н | Windows 98 | Да |
т | Windows 95 | Да |
С | Windows Server 2003 | Да |
е | Windows 2000 Server | Да |
р | Windows NT Server | Нет |
в | ||
е | ||
р | ||
Используемая библиотека | Gdi32.lib | |
Используемая DLL | - | |
Заголовочный файл | ||
- объявлено в | Wingdi.h | |
- включено в | - | |
Unicode | Нет | |
Замечания по платформе | Не имеется |