要绘制图像,请使用ImageList_Draw或ImageList_DrawEx功能。指定图像列表的句柄,要绘制的图像的索引,目标设备上下文的句柄,设备上下文中的位置以及一个或多个绘图样式。
指定ILD_TRANSPARENT样式时,ImageList_Draw或ImageList_DrawEx使用两步过程绘制蒙版图像。首先,它对图像的位和掩码的位执行逻辑“与”运算。然后,它对第一个操作的结果和目标设备上下文的后台位执行逻辑异或运算。该过程在生成的图像中创建透明区域;也就是说,掩模中的每个白色位使得所得图像中的相应位变得透明。
在纯色背景上绘制蒙版图像之前,您应该使用ImageList_SetBkColor功能将图像列表的背景颜色设置为与目标相同的颜色。设置颜色消除了在图像中创建透明区域的需要,并使ImageList_Draw或ImageList_DrawEx简单地将图像复制到目标设备上下文,导致性能显着提高。要绘制图像,请在调用ImageList_Draw或ImageList_DrawEx时指定ILD_NORMAL样式。
您可以随时设置蒙版图像列表的背景颜色,以便在任何实体背景上正确绘制。将背景颜色设置为CLR_NONE会导致默认情况下透明地绘制图像。要检索图像列表的背景颜色,请使用ImageList_GetBkColor功能。
ILD_BLEND25和ILD_BLEND50样式将图像与系统突出显示颜色进行抖动。如果您使用屏蔽图像来表示用户可以选择的对象,则这些样式很有用。例如,您可以使用ILD_BLEND50样式在用户选择时绘制图像。
使用SRCCOPY光栅操作将非屏蔽图像复制到目标设备上下文。无论设备上下文的背景颜色如何,图像中的颜色都会相同。ImageList_Draw或ImageList_DrawEx 中指定的绘图样式也对未屏蔽图像的外观没有影响。