游戏编程基础(一)GDI位图透明效果

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);

 

 这样一只可爱的小羊喝水图就出来了

最终效果图如下:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值