我是靠谱客的博主 能干柚子,最近开发中收集的这篇文章主要介绍网络游戏demo开发实例:多人在线RPG游戏(MMO RPG)demo的开发记录(第3篇),觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
version4
主要内容:透明贴图
所属部分:客户端
代码地址 https://github.com/changjixiong/MMO-RPGGame, 如何获得代码,请参考如何用SVN从github上检出代码的不同版本
邮件地址:changjixiong@gmail.com
本系列目录
下面这段代码用于生成透明位图
bitBlackBack=CreateCompatibleBitmap(hdcScreen, Width, Height);
bitMask=CreateBitmap(Width, Height, 1, 1, NULL);
hdcBlackBack=CreateCompatibleDC(hdcScreen);
hdcMask=CreateCompatibleDC(hdcScreen);
bitOldBlackBack=(HBITMAP)SelectObject(hdcBlackBack,bitBlackBack);
bitOldMask=(HBITMAP)SelectObject(hdcMask,bitMask);
BitBlt(hdcBlackBack, 0, 0, Width, Height, hdcOriginal, 0, 0, SRCCOPY);
SetBkColor(hdcBlackBack, RGB(255,255,255));
BitBlt(hdcMask, 0, 0, Width, Height, hdcBlackBack, 0, 0, SRCCOPY);
SetBkColor(hdcBlackBack, RGB(0,0,0));
SetTextColor(hdcBlackBack, RGB(255,255,255));
BitBlt(hdcBlackBack, 0, 0, Width, Height, hdcMask, 0, 0, SRCAND);
然后用下面的代码,完成透明贴图
BitBlt(hdcDest, x, y, Width, Height, hdcMask, 0, 0, SRCAND);
BitBlt(hdcDest, x, y, Width, Height, hdcBlackBack, 0, 0, SRCPAINT);
稍微说明一下
hdcBlackBack=CreateCompatibleDC(hdcScreen);
bitOldBlackBack=(HBITMAP)SelectObject(hdcBlackBack,bitBlackBack);
生成hdcBlackBack,并将一个单色位图选入,这个时候hdcBlackBack贴出来,就是一个黑块,如图:
BitBlt(hdcBlackBack, 0, 0, 22, 42, hdcOriginal, 0, 0, SRCCOPY);
以后,hdcBlackBack里面就是原图的内容,hdcBlackBack贴出来的效果如图:
SetBkColor(hdcBlackBack, RGB(255,255,255));
BitBlt(hdcMask, 0, 0, 22, 42, hdcBlackBack, 0, 0, SRCCOPY);
生成一个白色背景,黑色剪影的图,hdcMask贴出来的效果如图:
SetBkColor(hdcBlackBack, RGB(0,0,0));
SetTextColor(hdcBlackBack, RGB(255,255,255));
BitBlt(hdcBlackBack, 0, 0, 22, 42, hdcMask, 0, 0, SRCAND);
生成一个黑色背景的人物图,hdcBlackBack贴出来效果是这样的:
BitBlt(hdcDest, x, y, 22, 42, hdcMask, 0, 0, SRCAND);
在地图上打个洞,效果是这样的:
打洞以后,在做下面的操作
BitBlt(hdcDest, x, y, 22, 42, hdcBlackBack, 0, 0, SRCPAINT);
产生最终效果:
代码运行会感觉人物闪的厉害,因为while函数里面一轮太快了,下一版将贴图移动到WM_TIMER消息下面。
最后
以上就是能干柚子为你收集整理的网络游戏demo开发实例:多人在线RPG游戏(MMO RPG)demo的开发记录(第3篇)的全部内容,希望文章能够帮你解决网络游戏demo开发实例:多人在线RPG游戏(MMO RPG)demo的开发记录(第3篇)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复