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);
这样一只可爱的小羊喝水图就出来了
最终效果图如下: