网络游戏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的开发记录(第0篇)
最近在业余时间制作一个MMO RPG的demo,代码提交在github上,有兴趣的朋友可以自己导出代码(https://github.com/changjixiong/MMO-RPGGame), 方法 ...
- 使用FLEX3开发大型多人在线游戏
使用FLEX3开发大型多人在线游戏 2009-09-02 10:07 使用FLEX3开发大型多人在线游戏 收藏 使用FLEX3开发大型多人在线游戏 大型多人在线游戏(MMO)技术已经涉足到各种软件形式 ...
- 使用Adobe Flex 3开发大型多人在线游戏
使用Adobe Flex 3开发大型多人在线游戏 2011年03月28日 大型多人在线游戏(MMO) 技术已经涉足到各种软件形式中了. 当我们还在思考MMO 时, 多人游戏已经使很多玩家能够实时连接进 ...
- 全球最大多人在线创作游戏Roblox暂时关闭 官方称将尽快恢复运行
10月31日消息,据网友爆料,世界最大的多人在线创作游戏Roblox近日突然下线. Roblox官网只留下了一张图片,图片显示,"正在让事情变得更好,稍后就会回来". 10月29日 ...
- 想要和朋友一起打猎吗?狩猎场Online多人在线打猎游戏,快来玩吧!
想要和朋友一起打猎吗?狩猎场Online多人在线打猎游戏,快来玩吧! posted on 2016-08-15 22:47 雨亭 阅读( ...) 评论( ...) 编辑 收藏 转载于:https:/ ...
- java编写rgp游戏地图,unity RPG游戏地图编辑 RPG Map Editor v1.5.5
描述 unity RPG游戏地图编辑 RPG Map Editor v1.5.5 所支持的Unity版本:5.3.1 及以上版本 Fully Supports Unity 5! Create an R ...
- 从零开始完整开发基于websocket的在线对弈游戏【五子棋】,只用几十行代码完成全部逻辑。
五子棋是规则简单明了的策略型游戏,先形成五子连线者获胜. 本课程习作采用两人在线对弈的方式进行比赛,拿着手机在上下班路上玩特别合适. 整个过程在众触低代码应用平台进行,使用表达式描述游戏逻辑(高度简化 ...
- 正在做的一款HTML5多人在线扑克牌游戏:99分
用Node.JS做服务端,用WebSockets通信,实现HTML5多人在线游戏. 这款扑克牌游戏名称叫99分,源于活动聚会时常多人玩的一种扑克游戏,特别适合6人.8人.10人玩. 这个游戏由3个爱好 ...
- 多人在线斗地主游戏开发——自定义TCP网络通信协议包格式
什么叫做通信协议?为什么制定通信协议? 怎么制定通信协议? 不知道大家有没有迷茫过这个问题,反正我是有的,,, 想我在刚接触网络编程的时候,是linux下用socket懵懵懂懂地按照pdf书籍上的代码 ...
最新文章
- 一个TreeView 样式表
- Android layout 优化:使用include和merge 标签
- 使用iostat分析IO性能
- Flink Forward Asia 2020 - Keynote 总结
- android 设置PopupWindow透明度
- 数据结构练习 00-自测3. 数组元素循环右移问题 (20)
- linux openh264 编译,在Linux下为Android构建openh264
- oracle 时间按季度,ORACLE时间字段取年、月、日、季度
- TIOBE 3 月编程语言排行榜:Ruby 重回前十,Kotlin 突围
- opencv 显示程序运行时间
- Mybatis参数Integer类型值为0 源码处理
- 关于co-NP的理解
- 撤销工作表保护原密码_批量解除工作表保护,和批量执行保护一样简单
- k3导入账套_金蝶K3财务操作流程
- 通过网易云api实现一个简单的音乐播放器
- 台式计算机最新配置,例举2019推荐组装台式电脑最新配置清单
- win10重装系统(正版)(好用)(带激活方法)
- 推荐几个中文在线音乐网站
- UE4 自定义按键事件(踩坑记录)
- 常见硬件接口汇总(未完待续)