《(精品)制作屏蔽图(掩码图).ppt》由会员分享,可在线阅读,更多相关《(精品)制作屏蔽图(掩码图).ppt(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、制作掩码图(屏蔽图)Visual C+游戏编程基础中用到了屏蔽图,初学游戏编程,我在这里遇到了许多问题,现在我的问题解决了,留下此文档,希望能帮到同样遇到问题的人。注:此文根据TransparentBlt 函数的实现编写,适合初学游戏编程在透明位图实现方面遇到困难的人。我们的目的很简单:图1图2用图1制作出图2我们需要:两个装相片的“画框”:HBITMAP person,maskbm;还有两个DC:HDC mdc,maskdc;最多再增加一个hdc而已。好了,下一步然后,在BOOL InitInstance(HINSTANCE hInstance,int nCmdShow).UpdateWin
2、dow(hWnd);/在这一句的后面我们先在两个“画框”里面装上画:像这样:person=(HBITMAP):LoadImage(NULL,);maskbm=CreateBitmap(宽度,高度,1,1,NULL);这两个函数大家应该很熟悉,要注意的是,在CreateBitmap()中,中间两个应设为1,1,person里面装的是图1maskbm里面是空白位图,程序需要然后,创建两个兼容dc mdc=CreateCompatibleDC(hdc);maskdc=CreateCompatibleDC(hdc);这一步简单再把两个“相框”选进两个dcSelectObject(maskdc,mask
3、bm);SelectObject(mdc,person);这一步也简单接下来,就是见证奇迹的时刻:用这个SetBkColor(mdc,RGB(255,255,255);有一点很奇怪,我把这个注释起来也可以,可能是我选择的位图比较特殊吧再拷贝到maskdc BitBlt(maskdc,0,0,宽度,高 度,mdc,0,0,SRCCOPY);SelectObject(mdc,person)mdc里面存有person/这是上一步然后我们对mdc用了SetBkColor再将它里面的图拷贝到maskdc中maskdc里面只能存放“黑白照片”所以呢,它就会变成图2那样不信,你把maskdc的内容拷贝到hd
4、c中,就会出现其实这张是我运行后用qq截图的,大小不太一样 person=(HBITMAP):LoadImage();maskbm=CreateBitmap(128,192,1,1,NULL);mdc=:CreateCompatibleDC(hdc);maskdc=CreateCompatibleDC(hdc);SelectObject(maskdc,maskbm);SelectObject(mdc,person);SetBkColor(mdc,RGB(255,255,255);BitBlt(maskdc,0,0,128,192,mdc,0,0,SRCCOPY);这就是实现代码:看吧,8句代码
5、就搞定了细心的初学者会发现,书本上那恐龙图片的背景是黑的,而我的图片背景是白的,白 或操作 大背景 =有问题应该是 黑 或操作 大背景 =黑方法是将人物贴图的小背景(我将游戏窗口的背景叫成大背景)变黑,代码有五六行参考资料 其实只要了解一下TransparentBlt函数实现的原理 就行,用的时候咱还用TransparentBlt个人觉得参考资料这里写的让人不容易看懂,所以自己写了这个,一定要看懂啊,不然我白忙活了。本人第一次制作课件,有不协调处,请多谅解,谢谢!顺便提一下,我在做的过程中遇到过一个问题,TransparentBlt 函数起不了作用,我纳闷了好久,终于发现了:用vc+的资源编辑器处理过背景的图片,用的时候会有这个问题,所以,如果有问题的话,换一张没被“污染”过的图片试试吧!忘了一件事,这是在百度文库,所以参考资料是http:/