网站大量收购闲置独家精品文档,联系QQ:2885784924

图形与音乐简介.ppt

  1. 1、本文档共61页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章 图形与音乐简介 第四节 简单动画设计 所谓动画实质上就是利用了电影的原理,本身是静止的图形,当它们以每秒25幅以上的速度变化时,就成为动画了。 产生动画的常用方法有4种: 清除法:在原地画一幅图,延时一定时间将其清除,改变位置后再重画。 动态窗口法:开一图形窗口,在窗口中画一图形,然后使窗口移动。 存储再现法:将屏幕上的图形保存到内存缓冲区内,清除屏幕,在新位置再现图形。 页交替法:将屏幕存储器分为若干页,在每个页面上作不同的画,再按一定顺序显示各页。 第四节 简单动画设计 一、清除法 本方法利用 cleardevice()和 delay()函数相互配合,先画一幅图形,让它延迟一定时间,然后清屏,再画另一幅,如此反复,形成动画效果。 【例10-8】 画一个半径为60像素的圆,并让它从屏幕左边水平移动到屏幕右边。 参考源代码: 【模仿训练】 在屏幕上画一白色圆形轨道,再设计一个黄色小球没此轨道作顺时针方向移动。 【思考验证】 修改本例,使该圆在屏幕上沿垂直方向上下移动三次。 第四节 简单动画设计 二、动态窗口法 本方法利用图形窗口设置技术实现动画效果。主要思想是:在不同图形窗口设置同样的图像,而让窗口沿x轴方向移动,每次新窗口出现前清除上次窗口,从而出现图像沿x轴移动之效果。 【例10-9】设计一个不断变化颜色的立方体,沿屏幕从左往右移动。 函数movebar(int xorig)开一窗口并在该窗口中画一填充的立方体,xorig是窗口左上角的x坐标。主函数中不断的改变xorig后再调用movebar(),从而产生动画效果。设计时应注意坐标不要超出范围。 参考源代码: 第四节 简单动画设计 三、存储再现法 这种方法是先在屏幕上作出图形,再将其保存到内存缓冲区中,待清屏后再在新位置重现该图形。这种方法是比较好的动画设计方法 存储再现法用到的几个函数: (X1,y1)为图形左上角坐标;(X2,y2)为图形右下角坐标;*bitmap为保存图形的缓冲区首地址指针;op为图形重现方式,具体取值如表10-15。 参数说明 将前面保存的图像重现 putimage(int x1, int y1, *bitmap, int op) putimage 测定图像所占字节数 imagesize(int x1, int y1, int x2, int y2) imagesize 将图像保存到内存中 getimage(int x1, int y1, int x2, int y2, *bitmap) getimage 功 能 格 式 函数名 第四节 简单动画设计 putimage()函数图形重现方式: 进行非操作 4 NOT_PUT 进行与操作 3 AND_PUT 进行或操作 2 OR_PUT 进行异或操作 1 XOR_PUT 复制 0 COPY_PUT 含 义 值 符号名 【例10-10】模拟两个小球动态碰撞过程。 本例首先在屏幕上画一个填充的圆,再保存它的信息;改变圆心位置,再在右边再现一个圆;用for()循环实现两个圆的往复运动。通过控制坐标位置,而实现碰撞效果。 参考源代码: 第四节 简单动画设计 四、页交替法动画 图形方式下存储在显示缓存(VRAM)中的一满屏图像信息称为一页。每个页一般为 64K字节,VRAM可以存储几个页(视VRAM容量而定,最大可达8页),Turbo C在图形方式下显示的模式最多支持4页,因存储图像的页显示时,一次只能显示一页,因此必须设定某页为当前显示页(又称可视页),缺省时定为0页。 正在由用户编辑图形的页称为当前编辑页(又称激活页),在该页上编辑的图形将不会在屏上显示出来。 第四节 简单动画设计 缺省时0页为当前编辑页,即若不用下述的页设置函数进行设置,就认定0页既是编辑页,又是当前显示页。设置激活页和显示页的函数如下: void far setactivepage(int pagenum); /* 设置pagenum为编辑页 */ void far setvisualpage(int pagenum); /* 设置pagenum为显示页 * 这两个函数只适用于 EGA、VGA等显示适配器。 第四节 简单动画设计 【例10-11】在屏幕上交替显示一个圆和方块。 【简要分析】用setvisualpage()和setactivepage()函数将当前显示页和编辑页分开,在编辑页上画好图形后,立即令它变为显示页,然后在上次的显示页上(现在变为编辑页)画图,又再次交换,如此编辑页和显示页反复地交换,产生出动画效果。要让页的交替速度快,唯

文档评论(0)

phljianjian + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档