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


Анимация палитры

[Функция, связанная с этой страницей, DrawDib, является устаревшей функцией. Он был заменен классом MediaComposition. Класс MediaComposition оптимизирован для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать класс MediaComposition вместо DrawDib, если это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]

В следующем примере анимируется палитра с помощью функций DrawDibRealize, DrawDibChangePalette и DrawDibDraw .

Цвета растрового рисунка можно изменить с помощью функции DrawDibBegin в сочетании с DrawDibChangePalette. Во-первых, чтобы разрешить изменения палитры, укажите флаг DDF_ANIMATE в вызове DrawDibBegin. Во-вторых, задайте значения таблицы цветов из записей палитры с помощью DrawDibChangePalette.

Например, если lppe — это адрес массива PALETTEENTRY , содержащего новые цвета, а lpbi — это структура BITMAPINFOHEADER , используемая в DrawDibBegin или DrawDibDraw, следующий фрагмент обновляет таблицу цветов DIB.

hdc = GetDC(hwnd); 
DrawDibBegin(hdd, ....., DDF_ANIMATE); 
DrawDibRealize(hdd, hdc, fBackground); 
DrawDibDraw(hdd, hdc, ...., DDF_SAME_DRAW|DDF_SAME_HDC); 
 
// Call to change color. 
DrawDibChangePalette(hDD, iStart, iLen, lppe); 
. 
. 
. 
ReleaseDC(hwnd, hdc); 

Использование DrawDib