版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言动画技术的实现方法 在利用C语言进行工程开发、游戏设计以及计算机辅助教学软件研制中,都要采用动画技术。动画具有突出并强化事物特征、实现工作模拟、进行图形变换等多种功能,使所开发的软件科学合理、生动形象。我们在多年计算机辅助教学软件的开发研制实践中,探索出C语言动画技术的几种实现方法,现介绍如下: 一、利用目标移动技术实现画 动画的形式是多种多样的,目标移动是其中之一,即将被移动的目标由屏幕的一个位置移动到另一个位置。如果直接一步到位移动,没有中间过程,会使人有生硬或突然感,动感不强,为了实现良好的动感,必须根据目标的大小及移动距离的长短分成若干步来实现,每动一步先用底色覆盖原来的目标,再
2、将移动目标复现在政一位置,这样依次到目的地,由于人眼具有视觉暂留的生理现象,人的肉眼见此移动过程具有真实感。很多资料中又将这种动画设计方法叫做中间化。用此法还可以进行平移、变形、旋转等动画设计。如16火箭腾空.C程序中利用目标移动覆盖的方法在屏幕上左右往返移动一个圆和一个长形的子程序。 二、利用存取位图像函数产生动画上一种方法每移动一步都要在中间点上重新绘制移动目标,移动目标小,且绘制简单的内容较容易实现,而当被移动目标大且绘制较复杂时,采用这样的方法就不理想,C语言图形库中有将指定区域的一个位图像存到主存储区中的函数getimage( )和在屏幕指定位置上显示一个图像分配图像函数putima
3、ge( )。首先通过imagesize(x1,y1,x2,y2)函数为存储图像分配存储空间,(x1,y1),(x2,y2)分别为图像的左上角和右下角的坐标,然后调用mallocimagesize(x1,y1,x2,y2)得到新分配块的指针,如果没有足够的空间分配给新块就返回NUL,最后用 getimage(x1,y1,x2,y2,viod far buffer)将屏幕矩形区域内容保存到主存储区,前四个参数为图像左上、右下角坐标,buffer为指向主存储区中存放位图像区域的指针,至此,移动目标存储完毕。调用 putimage(x1,y1,void far buffer,ops)将以前用getim
4、age保存的图像重新送回屏幕,图像的左上角坐标为(X1,Y2),buffer为指向保存源图像的主存储区域的指针。参数ops指明了一个组合算子,它用于颜色,该颜色是由显示区域已在屏幕的和保存源图像的像素来计算的。其取值有拷贝(COPYPUT)、异或(XOR-PUT)、或(ANDPUT)和拷贝源图像的非(NOTPUT)等几种,取COPYPUT时,将源位图像拷贝到屏幕上,取XORPUT时,将源位图像同显示区域已在屏幕上的图像“异或”等等。巧妙使用这两个函数,可以产生多种动画形式,在Feiji.c程序中,就是应用此法。三、利用活动动页产生动画 一些计算机的图形硬件提供了两个以上独立的存储区或存储页,用
5、户可以在这些区或页中进行绘图、显示,这种方法只适用于几种图形适配器,如VGA有两个屏幕页,EGA有四个屏幕页。利用这种方法产生动画的基本思想是将各页预先绘好显示内容,然后在它们之间互相切换,或屏幕页的交替显示,便可产生动画。 在C语言图形库中有一函数setactivepage(int page),通过对该函数的调用可以使用page成为活动页,该句后面的所有图形输出都针对page 图形页,此时在本页各种图形绘制的过程在屏幕上看不到,当调用setvisualpage(int page)时,就使得page成为可见图形页。有了多个图形页,程序就可以将图形输出到一个关闭的屏幕页,可以理解为先在屏幕的后台
6、工作,然后,通过调用setvisualpage改变可见页来快速显示后台屏幕图像,从而产生动画。如可见页动画.txt。四、利用调色板产生动画 以上所介绍的移动、复制、交替出现的动画生成方法,都是使目标运动。有时可以利用调色板改变颜色产生动画。设计基本思想有二:一是各目标按所设计的颜色用调色板变色产生闪动感,如星空、灯光等;二是用不同的颜色(有一定的规律)在屏幕的一系列位置上绘制出目标,当改变调色板中的颜色时,所有的目标都将改变颜色,颜色的有序变化,就可以产生动画,如高山流水,便可用此法实现。 C语言图形库中有关调色板的函数有:getpalette(struct palettetype far p
7、alette)函数,它将有关当前调色板尺寸和颜色信息填入到由palette所指的palettetype的结构中;setallpalette(struct palettetype farpalette)函数把当前调色板置为由palette所指的palettetype结构中给出的值;setpalette(int inco , int blco)函数将调色板中的入口颜色inco改变为颜色blco。如:setpalette(0,4)便将当前调色板中的第一种颜色(即背景颜色)改变为实际颜色数4,屏幕上的其它颜色也随之改变。五、利用掩模技术产生动画 所谓掩模,就是对于被移动的目标,使用两个稍有不同的图像,
8、这两个特殊的图模互相混合,从而使移动的目标在经过背景时,不改变颜色,它是对getmage和putimage函数的深层应用。实现的方法是,对移动的目标事先做好AND图和XOR图,这两上特殊的图制作方法是不同的,AND图要求目标轮廓内容点的像素值为0,而XOR图则按实际颜色去制,并将这两个图用getimage保存于存储区中,当移动该目标时,先将要移动位置的屏幕保存,然后第一个模与屏幕相“与”,第二个模与第一个模相“异或”,最后,复制回保存的屏幕,两个模组合后目标将以正常的颜色出现在屏幕上,并且背景也保持不变。子程序move-5就是应用此法简单模拟地球围绕太阳转的实例。用此技术还可以使多个目标在屏幕
9、上同时运动,如太阳系的九大行星的公转等。 六、利用移动背景法产生动画 有些动画内容只移动目标是不能产生很好的动画效果的,如汽车的长时间行驶、飞机的航行等,由于受到屏幕所限,只能是稍纵即逝。但可以用背景移动法来实现动画,基本思想是目标不动,通过移动背景,使视觉产生相对运动,从而形成动画,移动背景要采用以上几种方法。限于片幅,不再举例。 动画实现的方法是多种多样的,只要我们在实际应用中,科学设计,灵活应用,定会使您的动画达到理想的效果。Tc2.0中怎么样设置图形显示?Tc2.0中有两种显示模式,一种是我们所熟知的字符模式,另一种是图形模式。在字符模式下只能显式字符,如ASCII字符。一般是显示25
10、行,每行80个字符。程序缺省的是字符模式。在字符模式下不能显式图形和进行绘图操作。要想进行图形显示和绘图操作,必须切换到图形模式下。Tc2.0中用initgraph()函数可以切换到图形模式,用closegraph()可以从图形模式切换回字符模式。initgraph()和closegraph()都是图形函数,使用图形函数必须包括头文件"graphics.h"。void far initgraph(int far *graphdriver,int far *graphmode,char far *pathtodriver);graphdriver是指向图形驱动序号变量的指针;
11、graphmode是在graphdriver选定后,指向图形显示模式序号变量的指针。pathtodriver表示存放图形驱动文件的路径。Tc2.0中有多种图形驱动,每种图形驱动下又有几种图形显示模式。在程序中图形驱动序号为VGA,图形显示模式序号为VGAHI。这是一种分辨率为640*480(从左到右坐标依次为0-639,从上到下坐标依次为0-479),能够显示16种颜色的图形模式。别的图形驱动序号和图形显示模式序号,可以从手册或联机帮助中找到。pathtodriver指示存放图形驱动文件的路径。图形驱动序号不同,图形驱动文件也不同。序号为VGA图形驱动对应"egavga.bgi&qu
12、ot;这个图形驱动文件。"egavga.bgi"一般在Tc目录下。void far closegraph(void);没有参数,从图形模式直接返回字符模式。initgraph()和closegraph()的常用用法如下:int gdriver = VGA, gmode=VGAHI, errorcode;/* initialize graphics mode */initgraph(&gdriver, &gmode, "e:tc2");/* read result of initialization */errorcode = graphresult();if (errorcode != grOk) /* an error occurred *
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- CN109153661B 用于纯化大麻素化合物的方法 (西姆莱斯有限公司)
- 精神卫生调研协议书合同
- 胃炎中医护理的现代化应用
- 企业安全培训宣传素材课件
- 手术区域皮肤准备与消毒
- 社区病媒生物可持续控制指南-蚊虫
- 合同条款审查标准化问答指导流程工具
- 生产设备维护与保养计划执行表
- 2026年宁波市升力同创科技咨询服务有限公司招聘备考题库及答案详解(考点梳理)
- 业务需求分析工作表
- 2025年军考真题试卷及答案
- 力的合成与分解说课课件-高一上学期物理人教版
- 小分子药物的肝毒性风险早期识别
- 2025年超星尔雅学习通《临床医学研究方法》考试备考题库及答案解析
- 2025食品行业专利布局分析及技术壁垒构建与创新保护策略报告
- 2025四川省教育考试院招聘编外聘用人员15人考试笔试模拟试题及答案解析
- 渣土运输消纳合同范本
- 公司贷款走账合同范本
- 2025版骨髓增生异常综合征中国诊断与治疗指南(全文版)
- 操作系统原理(慕课版)-教学课件全套
- 水产品速冻能效优化-洞察与解读
评论
0/150
提交评论