网络游戏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书籍上的代码 ...
最新文章
- 大疆、港科大联手!双目3D目标检测实验效果大放送 | CVPR 2019
- 南大计算机学硕复试,2019南大CS考研复试笔试回忆
- go 调用winapi_golang 调用windows API 中文的处理
- kdj买卖指标公式源码_“点金主图+副图+KDJ排序指标”公式源码
- RDP8.0来了,Windows 7可以升级RDP了
- Bootstrap学习笔记01【快速入门、栅格布局】
- 使用Repeater实现类似GridView编辑功能
- 未能加载文件或程序集“Poderosa.Core
- 好好的虚拟机不能用了, 出现无法打开内核设备\\.\Global\vmx86: 系统找不到指定的文件的错误, 以下是网上找到的解决方法,亲测可用...
- 郁闷!我的Gmail邮箱的问题!
- hmcl手机版下载_hmcl启动器
- java 对话 智能,如何用Java实现智能对话机器人
- 一元线性拟合的matlab,基于MATLAB的一元线性回归分析
- PE格式之千里追踪输入表
- win10应用商店linux_解决win10应用商店“由于公司策略 此应用已被阻止”的方法...
- 计算机网络合集(除应用层之外)
- Kronecker克罗内克 R代码实现
- 如何让编辑器运行你的代码
- 前端利用docker在linux上部署nginx服务
- 00后喝出年营收10亿小酒馆,大学城旁“夜间星巴克”要IPO了
热门文章
- CentOS7 yum update 更新失败
- 计算机网络的分类及基本特点,计算机网络的定义、分类、特点
- 微服务高并发秒杀实战
- XUbuntu22.04之无法输入中标点符号(一百六十二)
- cfiledialog对话框大小_文件选择对话框:CFileDialog
- 【有声典藏】于丹论语
- ISE约束--UCF编辑的入门介绍[zz]
- 04741计算机网络原理2018年版-第二章 网络应用 知识要点
- 腾讯视频、优酷、乐视视频纷纷品牌升级,视频网站的好戏才刚刚开始?
- 什么硬件决定计算机运算速度,如何提高电脑运行速度,什么硬件决定电脑运行速度...