GDI实现透明位图还是相当简单的
位图的透明原理:
1.位图白色位置的RGB值为{255,255,255}
2.位图黑色位置的RGB值为{0,0,0,}
3.准备两张图,要显示的图片背景设置为黑色(左图),用于屏蔽掉背景的图片背景设置为白色,显示图像部位设置为黑色(右图)

4.先用屏蔽图(右图)与背景图做“AND”运算,后将前景图(左图)于背景图做“OR”运算,即可实现透明效果
关键代码如下:
hdc = GetDC(hWnd);
mdc = CreateCompatibleDC(hdc);
bg = (HBITMAP)LoadImage(NULL,"testbg.bmp",IMAGE_BITMAP,1024,768,LR_LOADFROMFILE);
test1 = (HBITMAP)LoadImage(NULL,"test1.bmp",IMAGE_BITMAP,463,552,LR_LOADFROMFILE);
test2 = (HBITMAP)LoadImage(NULL,"test2.bmp",IMAGE_BITMAP,463,552,LR_LOADFROMFILE);
...........
BitBlt(hdc,0,0,1024,768,mdc,0,0,SRCCOPY);
SelectObject(mdc,test2);
BitBlt(hdc,150,200,463,552,mdc,0,0,SRCAND);
SelectObject(mdc,test1);
BitBlt(hdc,150,200,463,552,mdc,0,0,SRCPAINT);
这样一只可爱的小羊喝水图就出来了
最终效果图如下:

本文介绍如何使用GDI通过两张特定背景的图片实现位图的透明效果。首先利用一张背景为白色的屏蔽图与背景图进行AND运算,然后将另一张背景为黑色的前景图与背景图进行OR运算。文章提供了实现该效果的关键代码。
231

被折叠的 条评论
为什么被折叠?



