MFC透明化图像的一些心得

来源:互联网 发布:食不厌精脍不厌细 知乎 编辑:程序博客网 时间:2024/05/17 04:10
 

依据msdn,BitBlt转彩色为单色时的规则由彩图的背景色来定。具体为:彩色图中与彩图背景色一致的部分被设定为白色,其他不一致的部分为黑色。

依据msdn,BitBlt中,单色转彩色的规则由彩图背景、前景来定。具体为:单色图中白色部分被涂上背景色,黑色部分被涂上前景色。

 例如: SetBkColor(mdc1, RGB(255, 255, 255));//将设备上下文的背景色设为白色,并且已知mdc2为单色图。
 BitBlt(mdc2, 0, 0, 22, 42, mdc1, 0, 0, SRCCOPY);//则此句意为彩色转单色,mdc1中有白色,则mdc2的对应的那块为白色,其他的为黑色。
 SetBkColor(mdc1, RGB(0, 0, 0));//设定mdc1的背景色为透明的黑色
 SetTextColor(mdc1, RGB(255, 255, 255));//设定mdc1的前景色为白色
 BitBlt(mdc1, 0, 0, 22, 42, mdc2, 0, 0, SRCAND);//则此句意为单色转彩色,mdc2的白色部分被涂上mdc1的背景色黑色,黑色部分涂上mdc1的前景色白色,然后与mdc1做“与”。
 BitBlt(mdcMap, 200, 150, 22, 42, mdc2, 0, 0, SRCAND);

 BitBlt(mdcMap, 200, 150, 22, 42, mdc1, 0, 0, SRCPAINT);
 BitBlt(dc.m_hDC, 0, 0, 400, 479, mdcMap, 0, 0, SRCCOPY);

原创粉丝点击