透明位图网上说了很多,看了半天还是不懂,估计就是因为
1.图的颜色取反是个啥意思?
2.SetBkColor是设置字体背景颜色的,用在图上,又是个啥意思?
反正搞了那么多,最后就总结成最精华的5步方法:
1.SetBkColor(原DC, RGB(原图白色,这里就是黑色)),// setbkcolor,作用应该是只会对原图的背景单色产生效果
2.BitBlt(掩DC, 原DC, SRCINVERT/SRCPAINT/SRCCOPY这三种光栅模式都可以)// 将原DC背景区域作画到掩DC,效果颜色是与原图背景色相反的白色// 注:从第二步开始产生透明背景效果
3.BitBlt(目标DC, 原DC, SRCINVERT)// 由1产生的效果,原图单色区域会与目标DC是相同的.
4.BitBlt(目标DC, 掩DC, SRCAND)// 由1,2产生的效果,产生掩DC本色(应该是黑色)透明图
5.BitBlt(目标DC, 原DC, SRVINVERT)// 将原图做到第四步的图,只会选取不同于上图区域的区域取原图作画.
估计看了更不明白,呵呵,反正我也没搞明白.附上部分代码,可以自己试验下.
全局变量:
HDC himage2DC;
HDC hmaskDC;
HDC himageDC;
HDC hmask2DC;
HDC himage3DC;
HDC hmask3DC;
HBITMAP himage2bitmap;
H