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篇)相关推荐

  1. 网络游戏demo开发实例:多人在线RPG游戏(MMO RPG)demo的开发记录(第0篇)

    最近在业余时间制作一个MMO RPG的demo,代码提交在github上,有兴趣的朋友可以自己导出代码(https://github.com/changjixiong/MMO-RPGGame), 方法 ...

  2. 使用FLEX3开发大型多人在线游戏

    使用FLEX3开发大型多人在线游戏 2009-09-02 10:07 使用FLEX3开发大型多人在线游戏 收藏 使用FLEX3开发大型多人在线游戏 大型多人在线游戏(MMO)技术已经涉足到各种软件形式 ...

  3. 使用Adobe Flex 3开发大型多人在线游戏

    使用Adobe Flex 3开发大型多人在线游戏 2011年03月28日 大型多人在线游戏(MMO) 技术已经涉足到各种软件形式中了. 当我们还在思考MMO 时, 多人游戏已经使很多玩家能够实时连接进 ...

  4. 全球最大多人在线创作游戏Roblox暂时关闭 官方称将尽快恢复运行

    10月31日消息,据网友爆料,世界最大的多人在线创作游戏Roblox近日突然下线. Roblox官网只留下了一张图片,图片显示,"正在让事情变得更好,稍后就会回来". 10月29日 ...

  5. 想要和朋友一起打猎吗?狩猎场Online多人在线打猎游戏,快来玩吧!

    想要和朋友一起打猎吗?狩猎场Online多人在线打猎游戏,快来玩吧! posted on 2016-08-15 22:47 雨亭 阅读( ...) 评论( ...) 编辑 收藏 转载于:https:/ ...

  6. 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 ...

  7. 从零开始完整开发基于websocket的在线对弈游戏【五子棋】,只用几十行代码完成全部逻辑。

    五子棋是规则简单明了的策略型游戏,先形成五子连线者获胜. 本课程习作采用两人在线对弈的方式进行比赛,拿着手机在上下班路上玩特别合适. 整个过程在众触低代码应用平台进行,使用表达式描述游戏逻辑(高度简化 ...

  8. 正在做的一款HTML5多人在线扑克牌游戏:99分

    用Node.JS做服务端,用WebSockets通信,实现HTML5多人在线游戏. 这款扑克牌游戏名称叫99分,源于活动聚会时常多人玩的一种扑克游戏,特别适合6人.8人.10人玩. 这个游戏由3个爱好 ...

  9. 多人在线斗地主游戏开发——自定义TCP网络通信协议包格式

    什么叫做通信协议?为什么制定通信协议? 怎么制定通信协议? 不知道大家有没有迷茫过这个问题,反正我是有的,,, 想我在刚接触网络编程的时候,是linux下用socket懵懵懂懂地按照pdf书籍上的代码 ...

最新文章

  1. 大疆、港科大联手!双目3D目标检测实验效果大放送 | CVPR 2019
  2. 南大计算机学硕复试,2019南大CS考研复试笔试回忆
  3. go 调用winapi_golang 调用windows API 中文的处理
  4. kdj买卖指标公式源码_“点金主图+副图+KDJ排序指标”公式源码
  5. RDP8.0来了,Windows 7可以升级RDP了
  6. Bootstrap学习笔记01【快速入门、栅格布局】
  7. 使用Repeater实现类似GridView编辑功能
  8. 未能加载文件或程序集“Poderosa.Core
  9. 好好的虚拟机不能用了, 出现无法打开内核设备\\.\Global\vmx86: 系统找不到指定的文件的错误, 以下是网上找到的解决方法,亲测可用...
  10. 郁闷!我的Gmail邮箱的问题!
  11. hmcl手机版下载_hmcl启动器
  12. java 对话 智能,如何用Java实现智能对话机器人
  13. 一元线性拟合的matlab,基于MATLAB的一元线性回归分析
  14. PE格式之千里追踪输入表
  15. win10应用商店linux_解决win10应用商店“由于公司策略 此应用已被阻止”的方法...
  16. 计算机网络合集(除应用层之外)
  17. Kronecker克罗内克 R代码实现
  18. 如何让编辑器运行你的代码
  19. 前端利用docker在linux上部署nginx服务
  20. 00后喝出年营收10亿小酒馆,大学城旁“夜间星巴克”要IPO了

热门文章

  1. CentOS7 yum update 更新失败
  2. 计算机网络的分类及基本特点,计算机网络的定义、分类、特点
  3. 微服务高并发秒杀实战
  4. XUbuntu22.04之无法输入中标点符号(一百六十二)
  5. cfiledialog对话框大小_文件选择对话框:CFileDialog
  6. 【有声典藏】于丹论语
  7. ISE约束--UCF编辑的入门介绍[zz]
  8. 04741计算机网络原理2018年版-第二章 网络应用 知识要点
  9. 腾讯视频、优酷、乐视视频纷纷品牌升级,视频网站的好戏才刚刚开始?
  10. 什么硬件决定计算机运算速度,如何提高电脑运行速度,什么硬件决定电脑运行速度...