VC++程序知识初步.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
掌握C++的核心知识:继承、派生、多态性。

二维动画技术的基本实现: 动画实际上是一组连续的图片的按时显示,在有了计时器和二维图像显示的基本知识后,我们可以轻易的实现动画效果: VC++程序设计—二维图像初步 计时器的使用 WINDOWS允许我们为每个窗口设置自己的计时器,其基本方法为: 计时器ID 每隔多少毫秒计时器消息 计时器消息处理回调函数 WM_TIMER 当需要停止计时器,即停发WM_TIMER消息时,可以使用: BOOL CWnd::KillTimer( UINT_PTR nIDEvent ); VC++程序设计—二维图像初步 热身:一个基于对话框的简单的闪烁程序 目的:让当前程序窗口的颜色每隔一秒钟变换一次。 1、设置计时器: 2、处理WM_TIMER消息: 假设在两种颜色间变换,我们需要一个成员变量,表示当前是哪种颜色 //in OnInitDialog或者普通窗口的OnCreate消息 //成员变量 //构造函数中 //在OnTimer中 提示:InvalidateRect是一个使某个区域无效的函数,会自动发送WM_PAINT和WM_ERASEBKGND消息, void InvalidateRect( LPCRECT lpRect, BOOL bErase = TRUE ); //无效的区域,为NULL则为整个区域 //是否擦除当前背景(用指定画刷) VC++程序设计—二维图像初步 3、绘制: //in OnPaint处理函数 提示:关于CPaintDC::m_ps 程序只能使用这3个 m_ps是一个PAINTSTRUCT结构体,其中重要的是其rcPaint成员,代表一个无效区域或者重绘区域 VC++程序设计—二维图像初步 示例:定时器实现二维动画效果 1、假定当前有一组11张图片,存放在项目文件的Anime文件夹下,命名为0.bmp~10.bmp; 2、将其导入资源管理器,并且ID命名为字符串: 3、定义一个定时器 4、在窗口的OnCreate或者对话框的OnInitDialog中完成读取图片、开启定时器等相关操作: 5、在OnTimer中,响应定时器信息,更改显示的图片,形成动画效果 VC++程序设计—二维图像初步 WM_CREATE代码以及相关变量的定义: //辅助成员变量: //OnInitDialog: 这里设置的定时器时间为90毫秒,即希望1秒钟内,响应11次,否则动画效果不好 VC++程序设计—二维图像初步 提示:OnCreate或OnInitDialog是用于窗口或对话框启动而未显示的时候,完成一些初始化操作的。 OnTimer对应代码: 提示:关于动画素材,可以在网上下载gif格式图片,用photoshop导出。 VC++程序设计—二维图像初步 在制作游戏的时候,我们需要将一张人物或造型图片与一张背景图片融合,形成透明效果(也称为镂空图) + = + = VC++程序设计—二维图像初步 透明遮罩制作预备知识: 镂空图制作要求人物或者物品图像必须存放在一张背景为纯色且与需要镂空的图像颜色不同的图片上。 制作过程可以分为: 1、制作遮罩图。 2、利用适当的光栅操作取出人物或物品图像。 3、融合到背景上。 提示:其数学理论依据在于位图均是按位存放,黑色则为全0,白色则为全1,通过适当的“且”或“或”运算就能取到对应的位,并取消某些位的颜色。 软件和程序实现两种方法 VC++程序设计—二维图像初步 软件方法制作遮罩图(蒙版): 步骤1:使用PHOTOSHOP生成遮罩,蒙版图和抠图技巧请参考: /photoshop/459/2148459.shtml 以及相关教材 原图要去掉的部分为黑色,即RGB(0,0,0) 生成的遮罩图要与背景融合的部分为白色,即RGB(255,255,255) 生成的遮罩图要保留原图的部分为黑色,即RGB(0,0,0) VC++程序设计—二维图像初步 VC++程序设计—二维图像初步 透明图制作步骤2:将遮罩图和背景图象融合(SRCAND) 理论基础:现假设背景图颜色序列为遮罩图黑色部分(即原图应该保留的部分)为0000000,白色部分(即原图应去掉的部分)现假设该图片已被读取到g_char2中,且g_hdc和g_mdc分别代表物理和内存绘制句柄 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 AND 0 0 0 0 0 0 0 0 //遮罩图中的黑色部分与背景且运算 1 0 0 1 1 0 1 0 1 1 1 1 1 1 1 1 AND 1 0 0 1 1 0 1 0 //遮罩图中的白色部分与背景且运算 VC++程序设计—二维图像初步 步骤3:原图像和背景图象融合(SRCPAINT) 理论基础:在进行上一步操作后,目前背景中,原图像应存在的位置为全黑色,而原图像

文档评论(0)

勤能补拙 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档