单色图与彩色图之间的转换

  在制作透明位图时,经常用到单色图(遮罩图,两色图)与目标位图进行"与""或"等操作就能得到想要的透明效果,在其中用到的最多的就是BitBlt这个函数,另外,在使用之前是要对目标位图进行前景和后景颜色的设置,为什么呢?请看MSDN的解说:

  模拟透明的方法也包含基于windows的单色图向彩色图转换的机制,反之亦然。Windows概念中的文本颜色(前景色)和背景色被用来映射两种格式的转换。在blt操作中,当dest为彩色图,src为单色图时,在进行ROPSRCANDSRCANDSRCINVERTSRCPAINT等),操作之前,单色图src中的0black)像素被转换成dest的前景色,1white)像素被转化为dest的背景色。相反,从彩色图向单色图转换时,即dest为单色图,src为彩色图时,src彩色图中所有与其背景颜色相同的像素变成1,与其背景不同的变为0

原文地址:https://www.cnblogs.com/hgy413/p/3693611.html