显示透明位图出现的怪异问题(TransparentBlt2()函数) 在《Windows游戏编程快速入门方法》中遇到的

 
最近在学习《Windows游戏编程快速入门方法》(模拟FC游戏的坦克),之前遇到些小问题,在网上搜下就能解决。

 

但在显示透明位图时,怎么也达不到所期望的结果。

 

经过后来两天的郁闷,终于被我瞎猫撞到死耗子硬生生给撞了出来。不过,实际原因仍有点不明白。

 

现在把它发出来让大家看看,也算是少走弯路吧。如果知道真实原因的,也请不吝贴出来!!


我的《Windows游戏编程快速入门方法》是一个Doc文件。所以,它所用的资源文件(图片)都是直接从里面“另存为”弄出来的。问题就出在这里。

 

    显示透明位图要用Bmp格式嘛,我就另存为Bmp格式。当然,《Windows游戏编程快速入门方法》中已说明该图片背景色是蓝色( RGB(0,0,255) )。因此,在显示透明位图时,最重要的那个参数(指明该把哪一种颜色变成透明)我设置为蓝色( RGB(0,0,255) )。

 

    从此我就开始郁闷了,无论怎么检查或在网上找,这方法完全没有错(代码),可就是达不到背景变成透明的效果。

 

    后来我发现那图片周围有两条不该有的黑色边框,就用Photoshop把边框改回蓝色。这下再运行,OK,背景变透明了!!

 

    细心的应该明白了吧,原来从Doc文件另存为出来的Bmp文件有问题。可我再次从Doc里另存出来一张,用Photoshop看了看它的背景色,是蓝色( RGB(0,0,255) )没错啊。如果没做修改,在透明位图的显示就无法成功。或者说只要在Photoshop里有存储操作,Bmp文件就变回“正常”了(我也不知道算不算正常,反正对那些代码来说是正常了,也不知道是不是因为代码不够严谨才会这样...这个问题就请达人来回答咯)。

 

    或许我说得不太明白(表达水平有限^_^),那么请再往下看:

经Photoshop修改过的Bmp
上为图一,正常Bmp图片(由于网络原因,上传的Bmp被自动转成了jpg格式,如果有兴趣,读者可以自己拿一张Bmp图放进Doc里,再另存出来试试)

 

 

从Doc中另存出来的Bmp

上为图二是从Doc文件中取出来Bmp图片

 

    如上两张图片,看上去一模一样,如果使用 TransparentBlt() 函数分别透明显示两张图片,图一正常显示,图二就象直接贴上去。效果如下:

 

TransparentBlt()图一时产生的效果

上为TransparentBlt()图一效果

 

 

TransparentBlt()图二的效果

上为TransparentBlt()图二效果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值