Палитры

Функции DrawDib требуют, чтобы приложение реагировало на два сообщения, ориентированные на палитру: WM_QUERYNEWPALETTE и WM_PALETTECHANGED. Если приложение не поддерживает палитру, необходимо добавить обработчик для каждого из этих сообщений. Дополнительные сведения об обработке WM_QUERYNEWPALETTE и WM_PALETTECHANGED сообщений см. в разделе "Добавление обработчиков сообщений палитры".

Текущую палитру DrawDib для контроллера домена можно реализовать с помощью функции DrawDibRealize . Палитру следует реализовать в ответ на сообщение WM_QUERYNEWPALETTE или WM_PALETTECHANGED или при подготовке к отображению последовательности изображений с помощью функции DrawDibDraw .

Изображение, сопоставленное с другой палитрой, можно нарисовать с помощью функции DrawDibSetPalette . Эта функция заставляет контроллер домена DrawDib использовать указанную палитру, которая может повлиять на качество изображения. Например, приложение, поддерживающее палитру, может реализовать палитру и не позволить DrawDib реализовать собственную палитру. Приложение может использовать DrawDibSetPalette для уведомления DrawDib о используемой палитре.

Дескриптор текущей палитры переднего плана можно получить с помощью функции DrawDibGetPalette . Если приложение использует текущую палитру переднего плана, оно не имеет монопольного использования палитры, а другое приложение может сделать недействительным дескриптор палитры. Приложение не должно освобождать палитру после завершения использования. Освобождение палитры может сделать недействительным дескриптор палитры для другого приложения.

Вы можете подготовить DrawDib для получения новых значений цвета для своей палитры с помощью функции DrawDibChangePalette . В следующем коде DrawDibChangePalette вы назначаете новые значения для таблицы цветов палитры. Если флаг DDF_ANIMATE не задан в контроллере домена DrawDib при вызове DrawDibChangePalette, вы можете выполнить изменения палитры с помощью DrawDibRealize для реализации палитры. Затем можно использовать DrawDibDraw для перерисовки изображения. Если флаг DDF_ANIMATE установлен в контроллере домена DrawDib, можно анимировать палитру и цвета отображаемого растрового изображения с помощью DrawDibDraw или DrawDibRealize. Флаг DDF_ANIMATE можно обновить с помощью функций DrawDibEnd и DrawDibBegin.

Примечание

Если вы освобождаете палитру DrawDib при выборе контроллера домена, ошибка интерфейса графического устройства (GDI) может привести к тому, что контроллер домена использует палитру. Вместо этого приложение должно использовать DrawDibSetPalette для изменения контроллера домена DrawDib для использования палитры по умолчанию или другой палитры.

 

Функции DrawDibEnd, DrawDibClose и DrawDibBegin могут освободить палитру DrawDib. Однако эти функции следует использовать только в том случае, если палитра не выбрана контроллером домена. Функция DrawDibDraw также может освободить палитру при использовании того же контроллера домена DrawDib, но задает различные параметры рисования (lpbi, dxDst, dyDst, dxSrc или dySrc) или другой формат.

Отрисовка изображений