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

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

описании функции CreatePalette. UINT. В случае успешного выполнения — число элементов, полученных из палитры; в ином случае — 0.

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

wingdi.h

См. также

GetPaletteEntries, CreatePalette, GetDeviceCaps

Пример

В следующем примере (рис 16.6) показано, как распечатать код RGB каждого цвета системной палитры.  В системе Windows в большинстве операций вывода используются 20 зарезервированных цветов.

См.    \local-sources\chapl6\16-ll . txt

GetSystemPaletteUse                    Windows 98   • Windows 2000

Описание

Функция GetSystemPaletteUse позволяет получить текущее состояние системной (физической) палитры, связанной с контекстом устройства. По умолчанию системная палитра содержит 20 постоянных цветов, которые не изменяются, когда приложение реализует свою логическую палитру. В приложении можно получить доступ к большинству этих цветов, вызвав функцию SetSystemPaletteUse.

Синтаксис

UINT GetSystemPaletteUse( HDC hdc )

Параметры

hdc

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

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

UINT. Текущее состояние системной палитры, связанной с данным контекстом устройства. Этот параметр может иметь одно из значений, перечисленных в табл. 16.6.

Таблица 16.6. Возвращаемые значения функции GetSystemPaletteUse

Значение

Описание

SYSPAL ERROR

Контекст устройства недопустим или не поддерживает цветовую палитру.

SYSPAL_NOSTATIC

Системная палитра не содержит постоянных цветов, кроме черно-белого.

SYSPAL_STATIC

Системная палитра содержит постоянные цвета, которые не изменятся, когда приложение реализует свою логическую палитру.

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

wingdi.h

См. также

GetSystemPaletteEntries, SetSystemPaletteUse, GetDeviceCaps

Пример

См. пример для функции SetSystemPaletteUse.

RealizePalette                          Windows 98   • Windows 2000

Описание

Функция RealizePalette отображает элементы палитры из выбранной в настоящее время логической палитры в системную палитру. Если DC представляет собой контекст устройства памяти, изменяется таблица цветов для растрового изображения, выбранного для контекста устройства. Если контекстом устройства является DC отображения, изменяется физическая палитра для этого устройства.

Синтаксис

UINT RealizePaIette( HDC hdc )

Параметры

hdc

HDC. Контекст устройства, для которого была выбрана логическая палитра.

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

UINT. В случае успешного выполнения — число элементов в логической палитре, отображенной на системную палитру; в ином случае — GDI_ERROR.

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

wingdi.h

См. также

SelectPalette, CreatePalette, GetDeviceCaps

Пример

См. пример для функции CreatePalette.

ResizePalette                           Windows 98   • Windows 2000

Описание

Функция ResizePalette увеличивает или уменьшает размер логической палитры в соответствии с заданным значением. Если в приложении функция ResizePalette вызывается для уменьшения размера палитры, то элементы, оставшиеся в палитре нового размера, остаются неизменными. Если эта функция вызывается для увеличения размеров палитры, в качестве цвета дополнительных элементов палитры устанавливается черный, а значения флажков этих входов устанавливаются равными 0.

Синтаксис

BOOL ResizePalette( HPALETTE hPal, UINT «Entries )

Параметры

hPal

HPALETTE. Дескриптор палитры, в которую необходимо внести изменения.

«Entries

UINT. Число элементов в палитре после ее изменения.

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

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

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

wingdi.h

См. также

CreatePalette

Пример

См. пример для функции CreatePalette.

SelectPalette                          Windows 98   • Windows 2000

Описание

Функция SelectPalette позволяет выбрать логическую палитру для контекста устройства. В приложении одну логическую палитру можно выбрать для нескольких контекстов устройств. Однако изменения в логической палитре отразятся на всех контекстах устройств, для которых она выбрана. В приложении можно определить, поддерживает ли устройство операции с палитрой, вызвав функцию GetDeviceCaps со значением RASTERCAPS.

Синтаксис

HPALETTE SelectPalette( HDC hdc, HPALETTE hPal, BOOL bForceBackground )

Параметры

hdc

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

hPal

HPALETTE. Дескриптор логической палитры, которая должна быть выбрана.

bForceBackgromd

BOOL. Если значение этого параметра установлено равным TRUE, функция RealizePalette обеспечивает отображение цветов логической палитры в цвета, уже представленные в физической палитре, наилучшим возможным способом. Если значение этого параметра установлено равным FALSE, функция RealizePalette обеспечивает копирование логической палитры в палитру устройства, когда приложение находится в активном режиме. Если параметр hdc представляет собой контекст устройства памяти, этот параметр игнорируется.

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

HPALETTE. В случае успешного выполнения — предыдущая логическая палитра контекста устройства; в ином случае — NULL.

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

wingdi.h

См. также

RealizePalette, CreatePalette

Пример

См. пример для функции CreatePalette.

SetColorAdiustment                    * Windows 98   + Windows 2000

Описание

Функция SetColorAdjustment позволяет установить коэффициенты цветокоррекции для указанного контекста устройства. Коэффициенты цветокоррекции используются для корректировки первоначального цвета исходного растрового изображения при вызове функций StretchBlt и StretchDIBits. если установлен режим HALFTONE.

Синтаксис

BOOL SetColorAdjustment( HDC hDC, CONST COLORADJUSTMENT*Ipca)

Параметры

hDC

HDC. Контекст устройства, для которого должны быть установлены коэффициенты цветокоррекции.

Ipca

'CONST COLORADJUSTMENT*. Указатель на структуру, содержащую новые коэффициенты цветокоррекции. Определение структуры COLORADJUSTMENT приведено ниже.

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

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

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

wingdi.h

См. также

GetColorAdjustment, SetStretchBltMode

Определение COLORADIUSTMENT

typedef struct    tagCOLORADIUSTMENT{

WORD    caSize ;

WORD    caFlags;

WORD    callluminantlndex;

WORD    caRedGamma ;

WORD    caGreenGamma;

WORD    caBlueGamma;

WORD    caReferenceBlack ;   

WORD    caRef erenceWhite ;         

SHORT caContrast;

SHORT caBrightness;

SHORT caColor fulness;

SHORT caRedGreenTint; }    COLORADJOSTMENT;

Члены

caSize

WORD. Размер структуры в байтах.

caFlags

WORD. Определяет способ подготовки выходного изображения. Этот член может быть установлен равным NULL или представлять' собой любую комбинацию значений, перечисленных в табл. 16.7.

Таблица 16.7. Значения члена caFlags структуры COLORADJUSTMENT

Значение

Описание

CA_LOG_FB.TER

К окончательным результатам определения плотности выходных цветов необходимо применить логарифмическую функцию. Это позволяет увеличить контрастность цветов при низких значениях яркости.

CA_NEGATIVE

Должен быть показан негатив первоначального изображения.

callluminantlndex

WORD. Тип стандартного источника освещения, при котором рассматривается изображение. Этот член может иметь одно из значений, перечисленных в табл. 16.8.

Таблица 16.8. Значения параметра callluminantlndex функции COLORADJUSTMENT

Значение

Описание

ILLUMINANT DEVICE_DEFAULT

Значение по умолчанию, предусмотренное для устройства  

ILLUMINANT_A

Вольфрамовая лампа

ILLUMJNANT_B

Солнечный свет в полдень

ILLUMINANT_C

Дневной свет по стандарту NTSC

ILLUMINANT_D50

Обычная печать

ILLUMINANT_D55

Печать ценных бумаг

ILLUMINANT D65

Стандартный дневной свет — стандарт для электроннолучевых трубок и изображений

ILLUMINANT_D75

Дневной свет в северных широтах

ILLUMINANT F2

Люминесцентная лампа холодно-белого свечения

ILLUMINANTJTUNGSTEN

То же, что и ILLUMINANT_A

ILLUMINANT_DAYUGHT

То же, что и ILLUMINANT_C

ILLUMINANT_FLUORESCENT

То же, что и ILLUMINANT_F2

ILLUMINANT_NTSC

То же, что и ILLUMINANT_C

caRedGamma

WORD. Коэффициент гамма-коррекции «-ой степени для красного основного цвета в составе исходных цветов. Значение должно находиться в диапазоне от 2500 до 65000, где 10000 означает отсутствие гамма-коррекции.

caGreenGamma

WORD. Коэффициент гамма-коррекции «-ой степени для зеленого основного цвета в составе исходных цветов. Значение должно находиться в диапазоне от 2500 до 65000, где 10000 означает отсутствие гамма-коррекции.

caBlueGamma

WORD. Коэффициент гамма-коррекции «-ой степени для синего основного цвета в составе исходных цветов. Значение должно находиться в диапазоне от 2500 до 65000, где 10000 означает отсутствие гамма-коррекции.

со Reference Black

WORD. Эталон черного цвета для исходных цветов. Любые цвета темнее его считаются черными. Значение параметра должно находиться в диапазоне от 0 до 4000.

caReference Wliite

WORD: Эталон белого цвета для исходных цветов. Любые цвета светлее его считаются белыми. Значение параметра должно находиться в диапазоне от 6000 до 10000.

caContrast

SHORT. Коэффициент корректировки контрастности, который должен быть применен к исходному объекту. Значение параметра должно находиться в диапазоне от -100 до 100. Значение 0 означает отсутствие корректировки контрастности.

caBrightness

SHORT. Коэффициент корректировки яркости, который должен быть применен к исходному объекту. Значение параметра должно находиться в диапазоне от -100 до 100. Значение 0 указывает на отсутствие корректировки яркости.

ca Colorfulness

SHORT. Коэффициент корректировки цветности, который должен быть применен к исходному объекту. Значение параметра должно находиться в диапазоне от -100 до 100. Значение 0 указывает на отсутствие корректировки цветности.

caRedGreenTint

SHORT. Коэффициент корректировки оттенка красного или зеленого, который должен быть применен к исходному объекту. Значение параметра должно находиться в диапазоне от -100 до 100. Положительные числа вызывают корректировку в сторону красного, а отрицательные — в сторону зеленого. Значение 0 указывает на отсутствие корректировки оттенка.

Пример

В следующем примере отображается негатив изображения "SmileBMP", когда пользователь выбирает пункт меню Test!. В этом примере для определения текущих значений коэффициентов цветокоррекции в контексте устройства применяется функция GetColorAdjustment. Определяются коэффициенты цветокоррекции, которые позволяют создать негативное изображение, и устанавливаются с помощью функции SetCoIorAdjustment

См.    \local-sources\chapl6\16-12. txt

SetColorSpace                          Ф Windows 98   * Windows 2000

Описание

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

Синтаксис

HCOLORSPACE SetColorSpace( HOC hdc, HCOLORSPACE hColorSpace )

Параметры hdc

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

hColorSpace

HCOLORSPACE. Дескриптор логического цветового пространства.

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

HCOLORSPACE. В случае успешного выполнения функция возвращает дескриптор логического цветового пространства, заменившего параметр hColorSpace; в ином случае — NULL.

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

wingdi.h

См. также

CreateColorSpace

Пример

См. пример для функции CreateColorSpace.

SetDeviceGammaRamp                  Windows 98   • Windows 2000

Описание

Функция SetDeviceGammaRamp устанавливает гамма-характеристику видеоплат с непосредственным отображением цветов. В режимах непосредственного отображения цветов кодовые таблицы цветов не используются. В этих режимах обычно применяется 16-, 24- или 32-разрядное представление цвета. Не все видеоплаты с непосредственным отображением цветов поддерживают загружаемые гамма-характеристики.

Синтаксис

BOOL SetDeviceGaminaRamp( HDC hdc, LPVOID If Ramp )

Параметры

hdc

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

IpRamp

LPVOID. Указатель на набор из трех массивов цветов (красного, зеленого и синего), состоящих из 256 элементов типа WORD. Эти массивы служат в качестве отображения между кодами цветов в буфере изображения и коэффициентами цифро-аналогового преобразования.

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

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

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

wingdi.h

См. также

GetDeviceGammaRamp

Пример

В следующем примере показано, как с помощью функций GetDeviceGammaRamp и SetDeviceGammaRamp определить и изменить гамма-характеристику устройства отображения. Когда пользователь выбирает пункт меню Test!, программа определяет гамма-характеристику для дисплея и заменяет черный цвет красным. Демонстрируется новая установка гамма-характеристики путем отображения красного прямоугольника с использованием черной кисти.

См.    \local-sources\chapl6\16-13.txt

SetlCMMode                           Windows 98   • Windows 2000

Описание

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

Синтаксис

int SetICMMode( HDC hdc, int flCM )

Параметры

hdc

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

flCM

int. Этот параметр может принимать одно из значений, перечисленных втабл. 16.9.

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

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

Таблица 16.9. Значения параметра fICM функции SetlCMMode

Значение

Описание

ICM_ON

Включить согласование цветов изображения

ICM_OFF

Отключить согласование цветов изображения

ICM_QUERY

Возвратить информацию о текущем режиме

KM_DONE_OUTSIDEDC

Отключить управление цветами внутри контекста устройства. В Windows 2000 при этом происходит также отключение старого стиля цветокоррекции полутонов

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

wingdi.h

См. также

SetlCMProffle, GetColorSpace

Пример

См. пример для функции CreateColorSpace.

SetlCMProfile                           Windows 98   • Windows 2000

Описание

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

Синтаксис

BOOL SetICMProfiIe( HDC hdc, LPTSTR IpFileName )

Параметры

hdc

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

IpfileName

LPTSTR. Указатель на строку с нулевым символом в конце, которая содержит имя файла цветового профиля.

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

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

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

wingdi.h

См. также

SetlCMMode, EnumlCMProfiles

Пример

В следующем примере с началом выполнения программы отображается текущий профиль ICM. Когда пользователь выбирает пункт меню Test!, для контекста устройства клиентской области окна устанавливается профиль "MNP22G21.ICM". В этом примере класс окна должен предусматривать использование стиля CS_OWNDC.

См.    \local-sourcos\cbapl6\16-14.txt

SetPaletteEntries                        Windows 98   • Windows 2000

Описание

Функция SetPaletteEntries устанавливает коды красного, зеленого и синего цветов (RGB — red, green, blue) и флажки в ряде элементов логической палитры. Даже если логическая палитра была выбрана и реализована, изменения в этой палитре не влияют на системную палитру до тех пор, пока в приложении не будет снова вызвана функция RealizePalette.

Синтаксис

UINT SetPaletteEntries( HPALETTE hPal, UINT uStart, UINT uEntries, CONST PALETTEENTRY* Ippe )

Параметры

hPal

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

uStart

UINT. Первый логический вход палитры, который должен быть установлен.

uEntries

UINT. Число логических входов палитры, которые должны быть установлены.

Ippe

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

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

UINT. В случае успешного выполнения — число элементов, которые были установлены в логической палитре; в ином случае — 0.

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

wingdi.h

См. также

CreatePalette, RealizePalette

Пример

См. пример для функции CreatePalette.

SetSystemPaletteUse                   Windows 98   • Windows 2000

Описание

Функция SetSystemPaletteUse позволяет в приложении указать, должна ли системная палитра содержать 2 или 20 постоянных цветов. По умолчанию системная палитра содержит 20 постоянных цветов. Постоянные цвета не могут измениться при реализации логической палитры в приложении. Если окно приложения переходит- в режим переднего плана и указано значение SYSPAL_NOSTATIC, в приложении необходимо вызвать функцию GetSysColor, чтобы сохранить текущие системные цвета. В нем также необходимо вызвать функцию SetSysColors для установки приемлемых значений с использованием только черного и белого цветов. При переходе приложения снова в фоновый режим или при его завершении необходимо восстановить системные цвета.

Синтаксис

UINT SetSystemPaletteUse( HDC hdc, UINT u Usage )

Параметры

hdc

HDC. Контекст устройства. Этот DC должен относиться к устройству, которое поддерживает цветовые палитры. В приложении можно определить, поддерживает ли устройство операции с палитрой, вызвав функцию GetDeviceCaps с параметром RASTERCAPS.

u Usage

UINT. Новое назначение системной палитры. Этот параметр может иметь одно из значений, перечисленных в табл. 16.10.

Таблица 16. 10. Значения параметра uUsage функции SetSystemPaletteUse

Значение

Описание

SYSPAL_NOSTATIC

Системная палитра содержит 2 постоянных цвета (черный и белый).

SYSPAL_NONSTATIC256

В Windows 2000 системная палитра не содержит постоянных цветов.

SYSPAL_STATIC

Системная палитра содержит 20 постоянных цветов, применяемых по умолчанию, которые не изменятся, когда приложение реализует свою логическую палитру.

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

UINT. В случае успешного выполнения — предыдущее назначение системной палитры; в ином случае — SYSPAL_ERROR.

Включаемый

файл

wingdi.h

См. также

GetSystemPaletteUse, GetDeviceCaps, GetSysColor, SetSysColors

Пример

В следующем примере показано текущее состояние системной палитры. Когда пользователь выбирает пункт меню Test!, программа демонстрирует, как выполнить настройку на использование входов системной палитры путем отмены постоянного назначения кодов системной палитры. Перед завершением работы приложения системная палитра восстанавливается.

См.    \local-sources\chapl6\16-15.txt

UpdateColors                           Windows 98   • Windows 2000

Описание

Функция UpdateColors позволяет обновить клиентскую область контекста устройства, отобразив текущие цвета в клиентской области в реализованную логическую палитру. Иным образом, в неактивном окне с реализованной логической палитрой можно вызвать функцию UpdateColors, чтобы повторный вывод клиентской области этого окна произошел сразу после получения сообщения WM_PALETTECHANGED. Обновление клиентской области происходит с помощью функции UpdateColors обычно быстрее по сравнению с повторным выводом этой области. Однако поскольку функция UpdateColors выполняет преобразование цветов на основе цвета каждого пикселя перед изменением системной палитры, каждый вызов этой функции приводит к небольшой потере точности передачи цвета.

Синтаксис

BOOL UpdateColors( HDC hdc )

Параметры

hdc

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

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

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

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

wingdi.h

См. также

RealizePalette

Пример

В следующем примере показано, как приложение должно реагировать на сообщения    \VM_QUERYNEWPALETTE и   WM_PALETTECHANGEDПри получении сообщения WM_PALETTECHANGED программа вызывает функцию UpdateColors для оптимального использования оставшихся цветов. Приложение получает сообщение WM_QUERYNEWPALETTE непосредственно перед получением фокуса ввода, что дает ему возможность реализовать логическую палитру и восстановить цвета, которые могли быть изменены другими приложениями, когда это приложение было неактивным.

См.    \local-sources\chapl6\16-16. txt

UpdatelCMRegKey                     Windows 98   • Windows 2000

Описание

Функция UpdatelCMRegKey устанавливает, удаляет или запрашивает записи системного реестра, которые обозначают цветовые профили 1СС или

Значение

Описание

ICM_ADDPROFILE

Добавить профиль ICC к ветви 1СМ системного реестра

ICM_DELETEPROFILE

Удалить профиль ICC из ветви ICM системного реестра

ICM_QUERYMATCH

Определить, существует ли профиль, по данным структуры DEVMODE, указанной параметром IpszFileName

ICM_QUERYPROFLE

Определить, находится ли данный профиль в ветви ICM системного реестра

ICM_REGISTERICMATCHER

Сопоставить идентификатор профиля IpszCMID библиотеке DLL согласования цветов

ICM_SETDEFAULTPROFILE

Установить данный профиль в качестве применяемого по умолчанию

ICM_UNREGISTERICMATCHER

Удалить связь между идентификатором профиля IpszCMID и библиотекой DLL согласования цветов

библиотеки DLL согласования цветов. Выполняемое действие зависит от параметра nCommand. В интерфейсе GDI системный реестр используется для отслеживания профилей ICC, установленных в системе. Хотя это не обязательно, но если профили ICC скопированы в локальный каталог, они должны быть помешены в подкаталог Color каталога  System системы Windows.

Синтаксис

BOOL UpdateICMRegKey( DWORD  dwReserved, LPTSTR  IpszCMID, LPTSTR IpszFileName, UINT nCommand )

Параметры

dwReserved

DWORD. Зарезервированное значение; должно быть равно 0.

IpszCMID

LPTSTR. Идентификатор профиля библиотеки DLL согласования цветов, применяемой с профилем.

IpszFileName

LPTSTR Указатель на строку с нулевым символом в конце, которая указывает имя файла цветового профиля ICC, или указатель на структуру DEVMODE. Значение этого параметра зависит от значения параметра nCommand. Определение структуры DEVMODE приведено в главе 12, в описании функции CreateDC.

nCommand

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

Таблица 16.11. Значения параметра nCommand функции UpdatelCMRegKey

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

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

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

wingdi.h