Функция SetICMMode (wingdi.h)
Функция SetICMMode приводит к включению, отключению или запросу управления цветом изображений в определенном контексте устройства (DC).
Синтаксис
int SetICMMode(
HDC hdc,
int mode
);
Параметры
hdc
Определяет дескриптор для контекста устройства.
mode
Включает и отключает управление цветом изображений. Этот параметр может принимать одно из следующих значений константы.
Возвращаемое значение
Если эта функция выполняется успешно, возвращается ненулевое значение.
Если эта функция завершается сбоем, возвращаемое значение равно нулю.
Если указан 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 |