如何利用C语言实现动画?
基于擦除法的C语言动画设计与实现。
Movie design implement in C language base on erasure way。
东华理工学院计算机与通信系 姜林 何月顺 江西 南昌 330013。
摘要:
本文介绍了程序设计语言中动画设计的原理,在C语言中的动画设计常用方法,并提出了在C语言中新的动画设计方法――擦除法。阐述擦除法动画设计的原理,并通过一个具体的实例详细介绍了这种方法的设计实现,文中末尾总结了擦除法动画设计的优点及适用的范围。
关键字:擦除法;C语言;TurboC2.0;动画设计;原理;实现
中图分类号:TP312。方椅365 一键论文降重_就用方椅365
Summary:。
Through the principium of movie design in program design language, the。
thesis present movie design general way in C language, and bring。
forward new movie design way――erasure . The thesis also expatiate。
the principium of erasure way, particular describe the design。
implement of erasure by a instance. The end summarize the excellence。
and range of erasure way. 。
Key words: erasure way; C language ; TurboC 2.0; movie design;。
principium; implement。
0. 引言。
动画技术是计算机图形学中的重要内容,它广泛用于游戏娱乐,辅助教学,科学实验模拟等计算机辅助设计。用于动画设计的程序设计语言有多种,并且有多种方法。其中C语言程序设计又广泛用于各种软件开发项目中。因此,掌握C语言的动画设计方法对于软件开发很有必要。
1. 程序设计中动画原理。
程序设计中动画设计的原理类似电影的方法,它利用人的视觉具有暂留的生理特点,即人眼对动态图像的变化仅能分辨出时间间隔为25毫秒左右的变化,如果图像变化太快,则人眼无法分辨。在程序设计中我们可以在屏幕上画出一张图像,而将这张图像在不同时间出现,然后一张张快速(时间间隔小于25毫秒)呈现在屏幕上,从视觉效果上看这些画面就如同电影在连续变化一样,给人以动的视觉感觉。
2. C语言动画设计常用方法。
C语言常用动画设计方法[1]:
2.1 利用动态开辟图视口方法。
在位置动态变化,但大小不变的图视口中(用setviewpot()函数[2]),设置固定图形,这样呈现在观察者面前的是当前图视口位置在动态变化,因而在屏上看到的图像就好像在动态变化一样。
2.2 利用显示页和编辑页交替变化。
将当前显示页和编辑页分开(用setvisualpage()和setactivepage()函数),在编辑页上。
画好图形后,立即令该页变为显示页,然后在上次显示页上进行画图,画好后,再交换,如此反复,在观察者的视觉上,就出现了动画的效果。
2.3 利用画面存储再重放的方法。
如同制作幻灯片一样,将整个动画过程变成一个个片断,然后存储到显示缓冲区内,当把它们按顺序重放到屏幕上时,就出现了动画效果。
2.4 直接对图像动态存储器进行操作。
利用显示适配器上控制图像显示的各种寄存器和图像存储器VRAM,对其进行直接操作和控制,从而可以高效快速的实现动画效果。
上述4种方法均可以实现动画效果,但其操作比较复杂,且在程序中要对图像不断进行存取操作,这需要耗费大量内存资源。下面的擦除法动画设计可以解决上述问题。
3. 擦除法动画设计原理。
擦除法动画设计方法在很多的动画制作工具(如flash)中大量使用,但在程序设计中却鲜有人用。它的设计原理是:利用同色原理,当图形色与背景色相同时人眼不能感知。在动画设计中,当在一个位置画了一张图像时,使图像色与背景色相异,然后再到另一个位置画一张图像并使图像色与背景色也相异,此时将先前画的图像在原位置再画一张,并使图像色与背景色相同,这样人眼只能看到新画的一张图像而看不到先前画的图像,从而先前画的图像感觉被擦除了。这样连续画多张图像并在每画一张新的图像,将原来的图像擦除,从而在观察者来看就实现了动画的效果。
4. 擦除法的动画设计实现。
下面以一个上下翻滚的圆作为一个例子来讲解在TurboC2.0开发环境下用C语言来实现动画的设计过程,其中动画设计的方法是擦除法。具体的实现步骤如下:
4.1 TC的图形系统的初始化。
TurboC2.0为用户提供了一个功能强大的画图软件库,它包括图形库文件(),图形头文件()和许多图形显示器的驱动程序。在TurboC2.0开始进行图形设计前必须对之进行初始化,使系统知道要用什么类型的图形显示器的驱动程序,采用什么模式的图形方式,以及该适配器驱动程序的寻找路径名。这个初始化的函数是initgraph()。在本程序中的初始化如下:
gdriver=DETECT;。
initgraph(&gdriver, &gmode,。
"");//图形显示器、显示模式、路径自动检测。
4.2 画图。
setcolor(LIGHTRED);//设置圆的线条颜色为淡红色。
setlinestyle(0,0,1);//设置线条为形状为实线,线宽为一点宽。
setfillstyle(