Поделиться через


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

Функция SetICMMode приводит к включению, отключению или запросу управления цветом изображений в определенном контексте устройства (DC).

Синтаксис

int SetICMMode(
  HDC hdc,
  int mode
);

Параметры

hdc

Определяет дескриптор для контекста устройства.

mode

Включает и отключает управление цветом изображений. Этот параметр может принимать одно из следующих значений константы.

 

Значение Значение
ICM_ON
Включает управление цветом. Отключает старую цветовую коррекцию полутонов.
ICM_OFF
Отключает управление цветом. Включает старую цветовую коррекцию полутонов.
ICM_QUERY
Запрашивает текущее состояние управления цветом.
ICM_DONE_OUTSIDEDC
Отключает управление цветом внутри контроллера домена. В Windows 2000 также отключает старую цветовую коррекцию полутонов. Не поддерживается в Windows 95.

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

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

Если эта функция завершается сбоем, возвращаемое значение равно нулю.

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

Комментарии

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

После включения WCS для контекста устройства (DC) цвета, передаваемые в контроллер домена с помощью большинства функций API Win32, сопоставляются по цвету. Основными исключениями являются BitBlt и StretchBlt. Предполагается, что при выполнении передачи битового блока (blit) от одного контроллера домена к другому два контроллера домена уже совместимы и не нуждаются в цветовой коррекции. Если это не так, можно выполнить цветовую коррекцию. В частности, если в качестве источника для заливки используется независимое от устройства растровое изображение (DIB), а заливка выполняется в контроллере домена с включенным WCS, будет выполнено сопоставление цветов. Если это не так, отключите WCS для целевого контроллера домена, вызвав SetICMMode перед вызовом BitBlt или StretchBlt.

Если для создания растрового изображения в контроллере домена используется функция CreateCompatibleDC , то для растрового рисунка можно сопоставить цвет дважды: один раз при создании и один раз при выполнении заливки. Причина заключается в том, что растровое изображение в контроллере домена, созданное функцией CreateCompatibleDC , получает текущую кисть, ручки и палитру исходного контроллера домена. Однако WCS будет отключен по умолчанию для нового контроллера домена. Если WCS позже будет включен для нового контроллера домена с помощью функции SetICMMode , будет выполнена цветовая коррекция. Чтобы предотвратить двойную цветовую коррекцию с помощью функции CreateCompatibleDC , используйте функцию SetICMMode , чтобы отключить WCS для исходного контроллера домена перед вызовом функции CreateCompatibleDC .

При создании совместимого контроллера домена на основе контроллера домена принтера (см. раздел CreateCompatibleDC ) по умолчанию для сопоставления цветов всегда выполняется, если он включен для контроллера домена принтера. Цветовой профиль принтера по умолчанию используется при выполнении выделения в контроллере домена принтера с помощью SetDIBitsToDevice или StretchDIBits. Если это не так, отключите WCS для контроллера домена принтера, вызвав SetICMMode перед вызовом SetDIBitsToDevice или StretchDIBits.

Кроме того, при печати на контроллере домена принтера с включенным WCS необходимо вызывать функцию SetICMMode после каждого вызова функции StartPage , чтобы снова включить WCS. Функция StartPage вызывает функции RestoreDC и SaveDC , что приводит к отключению WCS для контроллера домена принтера.

Требования

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

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