对调色板进行动画处理

[与此页关联的功能 DrawDib 是旧版功能。 它已被 MediaComposition 类取代。 MediaComposition 类已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaComposition 类 而不是 DrawDib。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

以下示例使用 DrawDibRealizeDrawDibChangePaletteDrawDibDraw 函数对调色板进行动画处理。

可以通过将 DrawDibBegin 函数与 DrawDibChangePalette 结合使用来更改位图的颜色。 首先,若要允许更改调色板,请在调用 DrawDibBegin 时指定DDF_ANIMATE标志。 其次,使用 DrawDibChangePalette 设置调色板条目的颜色表值。

例如,如果 lppe 是包含新颜色的 PALETTEENTRY 数组的地址,而 lpbiDrawDibBeginDrawDibDraw 中使用的 BITMAPINFOHEADER 结构,则以下片段将更新 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