APP下载

C语言中动画技术的实现方法

2011-12-31张君楠

考试周刊 2011年88期

  摘 要: 动画具有突出并强化事物特征、实现工作模拟、进行图形变换等多种功能,使所开发的软件科学合理、生动形象。本文介绍了动画的基本原理及利用C语言程序设计实现动画的常用方法。
  关键词: C语言 动画技术 实现方法 图形处理函数
  
  C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。C语言具有强大的绘图能力,可移植性好,并具备很强的数据处理能力,因此适于编写系统软件、二维、三维图形和动画。利用C语言提供的图形处理函数设计动画程序,可以用于游戏娱乐、辅助教学、实验模拟和仿真等计算机辅助设计,具有较强的实用性。下面介绍几种C语言中图形动画技术的实现方法。
  一、动画实现的原理
  动画的制作原理类似于电影,它是利用了人的视觉效应,使一幅图像在不同时间和位置多次出现,从而产生动画效果。动画的实现其实主要依赖的是人的视觉残留作用,人的视觉有一种惰性,当看一幅画的时候这幅画的信息就保存在眼睛里了,即使这幅画突然消失,保存在眼睛里的信息还将保留一会儿(大约十分之一秒)。大脑的感觉就好像这幅画还存在似的。人不会感觉画面是断续的,从而产生动画的效果。因此动画就是由一连串许许多多的单幅图像,在程序中快速反复地循环显示而产生。因此我们可以用C语言提供的许多关于图形的函数来方便地实现动画,从前面的动画原理可以知道有两个关键的地方:一是图形图像的产生方式,要求产生的图像要准确。二是两幅图之间的转换,要求转换速度要快,不能产生闪烁感。只有这样实现的动画才逼真。
  二、C语言动画设计常用方法
  1.利用目标移动覆盖技术实现动画
  动画的形式是多种多样的,目标移动是其中之一,即将被移动的目标由屏幕的一个位置移动到另一个位置,直接一步到位移动,没有中间过程,会使人有生硬突然感,动感不强。为了实现良好的动感,必须根据目标的大小及移动距离的长短分成若干步来实现,每动一步先用底色覆盖原来的目标,再将移动目标复现在下一位置,这样逐步到达目的地。由于视觉暂留这一人的生理现象,人的肉眼所见此移动过程具有真实感。很多资料中又将这种动画实现方法叫做中间化。用此法还可以进行平移、变形、旋转等动画设计。
  2.利用擦除法实现动画
  擦除法动画设计方法在很多的动画制作工具中大量使用,它的设计原理是:利用同色原理,当图形色与背景色相同时人眼不能感知。在动画设计中,当一个位置画了一张图像并使图像色与背景色也相异,此时将先前画的图像在原位置再画一张,并使图像色与背景色相同,这样人眼只能看到新画的一张图像而看不到先前画的图像,从而先前画的图像被擦除了。这样连续画多张图像并在每画一张新的图像,将原来的图像擦除,在观察者看来就实现了动画的效果。擦除法动画设计便于操作,并且它的程序运行所需内存空间小,程序执行过程中不需要图形存入内存再从内存调出,节省了大量内存空间。
  3.利用调色板实现动画
  调色板是存放当前可用颜色的一张表,C语言定义了一个名为palette的预定义结构来存放调色板信息。该数据类型定义为:
  # define MAXCOLCRS 15
  Struct palettetype
  {
  Unsigned char size;
  Unsigned char color
  }
  利用getpalette( )函数可以获取当前调色板的信息,其方法为;
  Struct palettetype pa;
  getpalette(&pa);
  以上语句执行后,当前调色板信息就存放于结构pa中了。
  用调色板产生动画的基本思想是使用不同的颜色在屏幕上绘制图形。然后改变调色板中的颜色,这时图形中的所有对象立即改变颜色,就好像它们在新位置上重新绘制一样。这样将颜色变化序列化,即可制造出动画效果来。由于是通过改变调色板实现动画的,不需要重新绘制每一幅画面,因而显示速度非常快,并能产生独特的动画效果。由此可见,调色板动画必须靠改变调色板中的颜色来实现。这在Turbo C有可以通过setpalette( ),setrgbpalette( )和setall palette( )这三个函数来实现。
  三、基于TC环境中的graphics.h
  Turbo C提供了非常丰富的图形函数,所有图形函数的原型均在graphics. h中,使用图形函数时要确保有显示器图形驱动程序*BGI,同时将集成开发环境Options/Linker中的Graphicslib选为on,只有这样才能保证正确使用图形函数。图形模式的初始化不同的显示器适配器有不同的图形分辨率。即使是同一显示器适配器,在不同模式下也有不同分辨率。因此,在屏幕作图之前,必须根据显示器适配器种类将显示器设置成为某种图形模式,在未设置图形模式之前,微机系统默认屏幕为文本模式(80列,25行字符模式),此时所有图形函数均不能工作。设置屏幕为图形模式,可用图形初始化函数:
  void far initgraph(int far *gdriver,int far *gmode,char *path);
  其中gdriver和gmode分别表示图形驱动器和模式,path是指图形驱动程序所在的目录路径。
  本文介绍了在Turbo C中实现动画的几种常用的方法。但是各种动画技术都有其自身的优点和缺点,在实际的设计过程中,我们还要加以认真分析,科学设计,灵活应用。只有通过完整和精密的策划,才能使设计的动画达到理想的效果。
  
  参考文献:
  [1]谭浩强.C语言程序设计[M].北京:清华大学出版社,2003.
  [2]徐金桐.Turbo C实用大全[M]. 北京:机械工业出版社出版,1999.
  [3]焦华.标准C技能百练[M].北京:中国铁道出版社,2004.
  [4]孙家广.计算机图形学(第三版)[M].北京:清华大学出版社,2004.