Visual C++程序设计基础 教学课件 ppt 作者 刘加海 主编 应潇潇 黄崇本 余建军 副主编 第11章

上传人:E**** 文档编号:89156304 上传时间:2019-05-19 格式:PPT 页数:31 大小:868.51KB
返回 下载 相关 举报
Visual C++程序设计基础 教学课件 ppt 作者 刘加海 主编 应潇潇 黄崇本 余建军 副主编 第11章_第1页
第1页 / 共31页
Visual C++程序设计基础 教学课件 ppt 作者 刘加海 主编 应潇潇 黄崇本 余建军 副主编 第11章_第2页
第2页 / 共31页
Visual C++程序设计基础 教学课件 ppt 作者 刘加海 主编 应潇潇 黄崇本 余建军 副主编 第11章_第3页
第3页 / 共31页
Visual C++程序设计基础 教学课件 ppt 作者 刘加海 主编 应潇潇 黄崇本 余建军 副主编 第11章_第4页
第4页 / 共31页
Visual C++程序设计基础 教学课件 ppt 作者 刘加海 主编 应潇潇 黄崇本 余建军 副主编 第11章_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《Visual C++程序设计基础 教学课件 ppt 作者 刘加海 主编 应潇潇 黄崇本 余建军 副主编 第11章》由会员分享,可在线阅读,更多相关《Visual C++程序设计基础 教学课件 ppt 作者 刘加海 主编 应潇潇 黄崇本 余建军 副主编 第11章(31页珍藏版)》请在金锄头文库上搜索。

1、第11章 vc中的动画编程,111 图形载入及如何显示,11.1.1图形设备接口(GDI) 提供了一系列的函数和相关的结构,应用程序可以使用它们在显示器、打印机或其他设备上生成图形化的输出结果。 应用程序通过创建设备环境(DC),可以直接向指定的设备进行输出。 应用程序可以直接向一个物理设备进行输出;也可以向一个“逻辑”设备进行输出 应用程序可以使用属性函数来设置设备的操作方式和当前的选择。,有关图形的操作相关的类是CBitmap,CBitmap是GDI对象的 重要组成部分若要显示以文件形式存储在磁盘上的位图图像。 添加位图的过程如下所示: (1)创建新的CBitmap对象。 (2)将所需的位

2、图图像文件和对象关联。 (3)将其选入用于显示的DC。 (4)执行图像显示操作。 CBitmap类的成员函数: CBitmap( ):该函数是CBitmap类的构造函数,用于创建CBitmap对象。 LoadBitmap( ):该函数将现有的位图和CBitmap对象关联。,11.1.2 图像位图加载 LoadImage(加载位图):该函数装载目标,光标,或位图。 函数原型:HANDLE LoadImage(NINSTANCE hinst,LPCTSTR lpszName,UINT uType,int cxDesired,int CyDesired,UINT fuLoad);,112透明位图如何

3、生成,1121 BitBlt函数基本功能 函数功能:该函数对指定的源设备环境区域中的像素进行位块(bit_block)转换,以传送到目标设备环境。 函数原型:BOOL BitBlt(HDC hdcDest,int nXDest,int nYDest,int nWidth,int nHeight,HDC hdcSrc,int nXSrc,int nYSrc,DWORD dwRop);,1122 BitBlt函数使用实例 1用BitBlt实现位图上某种颜色的透明显示。 用MFC方式为例,先有如下的定义:,2 用BitBlt API进行透明显示的步骤: 处理pMaskDC为黑白DC,使pActive

4、DC上颜色为crTrans的部分在pMask显示为白色,其余地方显示为黑色。 将pActiveDC用BitBlt绘制到pDC上,使用SRCINVERT方式 将pMaskDC用BitBlt绘制到pDC上,使用SRCAND方式 再将pActiveDC用BitBlt绘制到pDC上,使用SRCINVERT方式,11. 2. 3图像加载与位图生成实例 物体的移动(匀速运动) 本工程中,使用BitBlt函数进行连续贴图来实现小球的运动动画。mdc变量是一个CDC对象,已经通过SelectObject将小球位图选到mdc中。dc.BitBlt(x,y,71,69,mdc,0,0,SRCCOPY);将mdc中

5、的位图,从0,0到71,69的点阵的象素点,拷贝到dc中的x,y到x+71,y+69中。 创建一个MFC 的单文档SDI工程,去除Docking toolbar和Initial status bar的选项,工程名为ball。 1在CmainFrame公有段中添加以下六个变量:,2打开MainFrm.cpp文件,添加CMainFrame的WM_CREATE消息处理函数。在CMainFrame:OnCreate函数中添加如下代码:,3添加CMainFrame的WM_TIMER消息处理函数。在CMainFrame:OnTimer函数中添加如下代码:,4将小球的图片文件BALL1.BMP拷贝到程序目录

6、ball中。然后编译运行程序,可以看到一个小球在屏幕上进行碰撞运动。 5运行效果如下图显示,113图形如何运动,11.3.1定时器 在动画编程中一定涉及到动画对象如何移动的问题,那就必须创建定时器,在vc中定时器用 API函数SetTimer()来实现。 定时器创建:SetTimer(),它有三个函数: 定时器ID-区别不同的定时器实例. 定时器间隔-最大分辨率55毫秒 定时器回调函数-特殊的回调函数的地址 定时器的相应:当计数器溢出时,产生一个WM_TIMER消息,通常在OnTimer()处理WM_TIMER消息。 1132定时器消息 定时器消息:WM_TIMER,114 图形对象动作,14

7、1图形对象动作原理 动画就是通过快速地播放一系列的静态画面,让人在视觉上产生动态的效果。组成动画的每一个静态画面叫做一“帧(frame)”,动画的播放速度通常称为“帧速率”,以每秒钟播放的帧数表示,简记为 fs。 在完成图片背景的设置之后,就是使图形对象产生动作,编程的设计也是基于动画的基本原理。,1141图形对象简单动作举例 这是一个小人挥手的例子,能够充分体现vc图形对象动作原理。实现效果如下图所示:,1创建MFC AppWizard(exe)工程,工程名称为sprite,采用Single Document方式创建。 2在左侧的Workspace中选择CMainFrame并点击鼠标右键,弹

8、出一个菜单,选择Add Member Variable菜单,分别添加三个成员变量: RECT rect; CBitmap *bitmap12; CDC *mdc;,3、在CMainFrame:OnCreate函数中,添加如下代码:,6、在类向导中,选择Messages Maps,选中CMainFrame类,选择WM_TIMER消息,然后单击Add Function按钮。在Member functions列表中可以看到OnTimer函数。 7、双击OnTimer函数,输入如下代码:,8、将精灵的图片文件T1.bmp,T2.bmp,T3.bmp,T4.bmp,T5.bmp,T6.bmp,T7.bm

9、p,T8.bmp,T9.bmp,T10.bmp,T11.bmp,T12.bmp拷贝到工程目录下。 9、编译运行工程。,115 动画综合实例,这个程序综合运用了以上小节的知识点,通过鼠标的移动来定位飞机飞行的位置,飞机飞行分为8个方向。本程序运行的时候,需要一些外围的图片资源。假设外围的素材目录都存放在工程文件的目录下,这个例子里所有的图片都放在bmp文件夹里面。,1、创建一个MFC 的对话框工程,名字叫FinalMotif,打开finalMotifDlg.cpp文件,在文件前面增加数据结构定义、全局变量定义和全局函数定义,2、打开FinalMotifDlg.cpp文件,在最后增加getpic函

10、数,3、打开FinalMotifDlg.cpp文件,在最后增加loadbmp函数,4、打开FinalMotifDlg.cpp文件,在最后增加TransparentBlt2函数,5、打开FinalMotifDlg.cpp文件,在最后增加manmove函数,6、打开FinalMotifDlg.cpp文件,在最后增加bianfw函数,7、打开FinalMotifDlg.cpp文件,在最后增加setman函数,8、打开CFinalMotifDialog:OnInitDialog函数中添加,9、在ResourceView中打开对话框:IDD_FINALMOTIF_DIALOG,删除IDC_STATIC的

11、TODO文字条,增加一个只读编辑框IDC_EDIT1,设置Read-Only属性,MutiLine属性,OEM Convert属性为TRUE; 设置Auto Hscroll属性为FLASE 10、修改按钮“确定”为“按键开始”;将取消按钮的Visible属性设置为FALSE,使按钮不可见。 11、增加按钮“按键开始”的消息映射CFinalMotifDialog:OnOK,12、增加按钮“取消”的消息映射CFinalMotifDialog:OnCancel,13、增加对话框的事件WM_TIMER事件函数CFinalMotifDlg:OnTimer,14、增加对话框的事件WM_LBUTTONDOWN事件函数CMyDlg:OnLButtonDown,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号