从图像列表中绘制图像

若要绘制图像,请使用 CImageList::D raw 成员函数。 你将指定要绘制的设备上下文对象的指针、要绘制的图像的索引、用于绘制图像的设备上下文中的位置,以及一组用于指示绘图样式的标志。

指定 ILD_TRANSPARENT 样式时, Draw 使用两个步骤来绘制蒙面图像。 首先,它对图像的位和蒙板的位执行逻辑“与”操作。 然后,它会对第一个操作的结果和目标设备上下文的背景位执行逻辑 XOR 操作。 此过程在生成的图像中创建透明区域;也就是说,掩码中的每个白色位都会导致生成的图像中的相应位透明。

在纯色背景上绘制蒙面图像之前,应使用 SetBkColor 成员函数将图像列表的背景色设置为与目标相同的颜色。 设置颜色无需在图像中创建透明区域,并且只需 Draw 将图像复制到目标设备上下文,从而提高性能。 若要绘制图像,请在调用时指定Draw样式。

可以随时设置屏蔽图像列表(CImageList)的背景色,使其在任何纯色背景上正确绘制。 将背景色设置为 CLR_NONE 会导致默认情况下以透明方式绘制图像。 若要检索图像列表的背景色,请使用 GetBkColor 成员函数。

ILD_BLEND25 和 ILD_BLEND50 样式使用系统高亮色为图像递色。 如果使用屏蔽图像来表示用户可以选择的对象,则这些样式非常有用。 例如,当用户选择图像时,可以使用 ILD_BLEND50 样式绘制图像。

使用 SRCCOPY 光栅操作将非掩码图像复制到目标设备上下文。 无论设备上下文的背景色如何,图像中的颜色都相同。 指定的 Draw 绘图样式也不会影响非掩码图像的外观。

除了 Draw 成员函数之外,另一个函数 DrawIndirect 扩展了呈现图像的功能。 DrawIndirect 采用 IMAGELISTDRAWPARAMS 结构作为参数。 此结构可用于自定义当前图像的渲染,包括使用光栅操作(ROP)代码。 有关 ROP 代码的详细信息,请参阅 Windows SDK 中的光栅操作代码用作画笔的位图

另请参阅

使用 CImageList
控件