若要绘制图像,请使用 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 中的 光栅作代码 和 位图作为画笔 。