从图像列表中绘制图像

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

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

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

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

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

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

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

另请参阅

使用 CImageList
控件