对调色板进行动画处理
[与此页关联的功能 DrawDib 是旧版功能。 它已被 MediaComposition 类取代。 MediaComposition 类已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaComposition 类 而不是 DrawDib。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
以下示例使用 DrawDibRealize、 DrawDibChangePalette 和 DrawDibDraw 函数对调色板进行动画处理。
可以通过将 DrawDibBegin 函数与 DrawDibChangePalette 结合使用来更改位图的颜色。 首先,若要允许更改调色板,请在调用 DrawDibBegin 时指定DDF_ANIMATE标志。 其次,使用 DrawDibChangePalette 设置调色板条目的颜色表值。
例如,如果 lppe 是包含新颜色的 PALETTEENTRY 数组的地址,而 lpbi 是 DrawDibBegin 或 DrawDibDraw 中使用的 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);
相关主题