Compartilhar via


Animando uma paleta

[O recurso associado a esta página, DrawDib, é um recurso herdado. Ele foi substituído pela classe MediaComposition. A classe MediaComposition foi otimizada para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use a classe MediaComposition em vez de DrawDib, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

O exemplo a seguir anima uma paleta usando as funções DrawDibRealize, DrawDibChangePalette e DrawDibDraw .

Você pode alterar as cores de um bitmap usando a função DrawDibBegin em combinação com DrawDibChangePalette. Primeiro, para permitir alterações de paleta, especifique o sinalizador DDF_ANIMATE na chamada para DrawDibBegin. Em segundo lugar, defina os valores da tabela de cores das entradas da paleta usando DrawDibChangePalette.

Por exemplo, se lppe for um endereço da matriz PALETTEENTRY que contém as novas cores e lpbi for a estrutura BITMAPINFOHEADER usada em DrawDibBegin ou DrawDibDraw, o fragmento a seguir atualizará a tabela de cores 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); 

Usando DrawDib