透明效果
有时候,我们需要在画面上显示一张角色的图像,而这张图片是有自己的背景的,要是直接贴到了游戏的画面中,就会出项覆盖游戏画面。显示出的效果特别不好,这里我们可以用到透明效果来处理。
其中,原理就是用BitBlt() 的Raster值运算去掉原图片的背影。但是只适用于原图背景为黑色,才会看到效果。
如图,左边部分为前景图,右边部分为屏蔽图
前景图的背景必须为黑色,屏蔽图的背景为白色
以下为显示的背景图
我们怎么样使用则会图来处理透明呢?其实就是Raster运算。
将屏蔽图和背景图做“AND”运算,贴到目的DC; 再将前景图和背景图做“OR”运算,贴到目的DC;
现在开始编写程序:
在VS2008中新建Win32程序,使用VC默认的框架。
首先定义全局变量:
HBITMAP bg, dra; //用来存储背景与前景图
HDC hdc; //用来暂时存储位图的DC
<