Палитры и согласование цветов, страница 4

странство RGB (red, green, blue — красный, зеленый, синий) устройства, пространство CMYK (cyan, magenta, yellow, black — голубой, сиреневый, желтый, черный) устройства и калиброванное пространство RGB.

Пространство RGB устройства и пространство CMYK устройства представляют собой цветовые пространства устройства, позволяющие использовать в приложениях цвета любых устройств вывода. Цветовое пространство RGB устройства представляет собой цветовое пространство, применяемое по умолчанию, для всех контекстов устройства. Цветовое пространство CMYK устройства обычно используется для принтеров, которые поддерживают коды цветов CMYK. Калиброванное цветовое пространство RGB определено стандартом XYZ 1931 Международной комиссии по освещению (CIE — Commission Internationale de 1'Eclairage). Конечные точки RGB определены так называемыми триплетами — тремя 32-разрядными значениями CIE XYZ.

В приложении можно изменить применяемое по умолчанию цветовое пространство для контекста устройства с помощью функций CreateColorSpace и SetColorSpace. Установка цветового пространства связана с определением формата информации о цвете, передаваемой из приложения в устройство, а также определением способа интерпретации устройством информации о цвете в терминах стандарта CIE XYZ.

Цветовой профиль

Цветовой профиль подробно определяет цветовые возможности отдельных устройств. Например, цветовой профиль видеомонитора определяет спектры излучения люминофоров этого устройства. Интерфейс GDI имеет лишь ограниченные возможности управления профилями в интересах приложения. По этой причине в приложениях можно просто перебрать все профили для какого-то устройства с помощью функции EnumlCMProfiles. Функция SetlCMProfile позволяет использовать в приложении конкретный профиль. Функция GetlCMProfile возвращает имя файла текущего профиля, используемого интерфейсом GDI при согласовании цветов изображения для контекста устройства.

Функции управления палитрой и согласования цветов

В табл. 16.1 приведены функции управления палитрой и согласования цветов. За таблицей следует подробное описание функций.

Функция

Назначение

CreatePalette

Создает логическую палитру

DeleteColorSpace

Удаляет логическое цветовое пространство

EnumlCMProfiles

Перечисляет цветовые профили, поддерживаемые для контекста устройства

GetBValue

Выбирает компонент синего цвета кода RGB

GetGValue

Выбирает компонент зеленого цвета кода RGB

GetRValue

Выбирает компонент красного цвета кода RGB

GetColor Adjustment

Позволяет определить коэффициенты цветокоррекции для контекста устройства

GetColorSpace

Позволяет определить дескриптор текущего логического цветового пространства для контекста устройства

GetDeviceGammaRamp

Позволяет определить гамма-характеристику видеоплаты с непосредственным отображением цветов

GeflCMProfile

Позволяет определить имя цветового профиля для контекста устройства

GetLogColorSpace

Позволяет получить информацию о логическом цветовом пространстве

GetNearestColor

Позволяет получить код цвета системной палитры, который будет использоваться вместо указанного цвета

GetNearestPalettelndex

Находит номер элемент палитры, который в наибольшей степени соответствует данному коду RGB

GetPaletteEntries

Определяет коды цветов для ряда элементов логической палитры

GetSystemPaletteEntries

Определяет цвет каждого элемента системной палитры

GetSystemPaletteUse

Позволяет определить, можно ли изменить в приложении системну палитру

RealizePalette

Отображает логическую палитру, выбранную для контекста устройства, на аппаратную палитру

ResizePalette

Изменяет размер логической палитры

SelectPalette

Выбирает цветовую палитру в контекст устройства

SetColor Adjustment

Устанавливает коэффициенты цветокоррекции для контекста устройства

SetColorSpace

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

SetOeviceGammaRamp

Устанавливает гамма-характеристику видеоплаты с непосредственным отображением цветов

SettCMMode

Разрешает или запрещает согласование цветов изображения для контекста устройства

SeflCMProfile

Устанавливает цветовой профиль для контекста устройства

SetPaletteEntries

Изменяет коды цветов в логической палитре

SetSystemPaletteUse

Позволяет вносить изменения в системную цветовую палитру

UpdateCotors

Перерисовывает клиентскую область, если приложение не имеет фокуса ввода, но реализовало логическую палитру

AnimatePalette                          Windows 98   • Windows 2000

Описание

Функция AnimatePalette заменяет входы в логической палитре. Эта функция позволяет быстро сменить цвета объектов, отображаемых с применением цветов логической палитры.

Синтаксис

BOOL AnimatePalette( HPALETTE hPal, UINT uStartlndex, UINT uEntries, CONST PALETTEENTRY* pPE )

Параметры

hPal

HPALETTE. Дескриптор логической палитры.

uStartlndex

UINT. Вход логический палитры, который должен быть заменен.

u Entries

UINT. Число входов, которые должны быть заменены.

pPE

CONST PALETTEENTRY*. Указатель на первый член массива структур PALETTEENTRY, используемых для замены входов палитры. Этот массив должен содержать не меньше входов, чем указано параметром uEntries. Определение структуры PALETTEENTRY приведено в описании функции CreatePalette далее в этой главе.

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

BOOL. В случае успешного выполнения — TRUE; в ином случае — FALSE.

Включаемый файл

wingdi.h

См. также

CreatePalette

Пример

В следующем примере создается быстро движущаяся красная полоса. Полоса начинает свое движение с левой стороны клиентской области. Когда пользователь выбирает пункт меню Test!, создается впечатление, что полоса перемещается слева направо в клиентской области. Программа, приведенная в этом примере, работает только в системах, которые настроены на поддержку 256 цветов. Движение вызвано быстрой сменой последовательности цветов, состоящей из 128 прямоугольников, размещенных заранее в клиентской области. Вначале красным цветом окрашен только крайний слева прямоугольник. Остальные окрашены белым цветом, поэтому они не видны. Цвет каждого следующего прямоугольника меняется на красный с использованием функции AnimatePalette. Это намного быстрее по сравнению с окрашиванием каждого прямоугольника с помощью функции Rectangle. В стиль главного окна должен входить стиль CS_OWNDC.

См.    \local-sources\chapl6\16-01 . fart

CheckColorslnGamut                    Windows 98   + Windows 2000

Описание

Функция CheckColorslnGamut определяет, принадлежит ли набор кодов цветов к гамме контекста устройства.

Синтаксис

BOOL CheckCoIorsInGamut( HDC Mr, LPVOID IpRGBTriples, LPVOID IpResult, UINT nCount )

Параметры

hdc

HDC. Контекст устройства.

IpRGBTriples

LPVOID. Указатель на массив триплетов RGB, который содержит коды цветов, предназначенные для проверки. Определение структуры RGBTRIPLE приведено ниже.