1 不需安装第三方软件的动画设计方法分析
(1)Logo适用于简易的嵌入式设备的动画设计
Logo语言的设计方法最为简单。它内置一套(Turtle Graphics)系统,其本身就是一种绘画语言,理论上可以加载到嵌入式系统中作动画开发;然而,因为一个嵌入式系统会有很多别的软件设计部分,其他功能都采用Logo显然并不合适,而要在一个嵌入式系统中安装两种开发环境更加不现实。所以,若在嵌入式系统开发中选用这种方法制作动画,应该只适合用于儿童用的复杂程度同等的简易的嵌入式设备。
(2)最适合嵌入式系统使用的擦除法
C语言是嵌入式系统开发使用最多的语言,并且高中低档的系统都可以用,因而采用C语言的所有动画设计方法,理论上均适用于嵌入式系统的屏幕动画开发。然而,诸如利用动态开辟图视口方法、利用显示页和编辑页交替变化、利用画面存储再重放的方法,以及直接对图像动态存储器进行操作的方法等程序比较复杂,且要对图像不断进行存取操作,这需要耗费大量内存资源;而擦除法动画设计则可以解决上述问题。其设计原理是:利用同色原理,当图形色与背景色相同时人眼不能感知。在动画设计中,当在一个位置画了一张图像时,使图像色与背景色相异,然后再到另一个位置画一张图像并使图像色与背景色也相异,此时将先画的图像在原位置再画一张,并使图像色与背景色相同,这样人眼只能看到新画的一张图像而看不到先前画的图像,从而先前画的图像感觉被擦除了。
这样连续画多张图像并在每画一张新的图像时将原来的图像擦除,从而在观察者看来就实现了动画的效果。综上所述,从耗费资源较少且执行速度较快的角度出发,笔者认为,采用C语言设计动画的常用方法中,最适合嵌入式系统使用的是*擦除法。
(3)CBuilder语言本身不太适合嵌入式开发
采用CBuilder语言设计动画,可以方便地利用现成的组件产生图像及控制时间,从而解决了动画设计中两个非常重要的问题。然而CBuilder语言本身不太适合嵌入式开发,因为嵌入式开发对空间、效率都要求较高,而CB是针对高层的应用程序开发的工具。但是,有两点值得注意:首先,现在很多公司做嵌入式开发多是自己搞一套系统,使其适合使用CB完全可以做到;另外,Borland公司正在开发嵌入式的C++,可以期待。
(4)Java语言非常适合嵌入式系统的屏幕动画设计Java语言是嵌入式系统开发经常采用的语言,在手机中更是应用良多。Java语言的动画设计方法通过定义线程的方法来控制动画时间;而使图像动的平滑的双缓冲方法需要很大内存,因而更常用的消除画面闪烁的办法是重载upGlate()。
(5)C++语言方法均可用于嵌入式系统动画设计
面向对象的C++语言中,可供选择的动画设计方法很多:简单的动态图像(如不断闪烁的星星)可以采用底色覆盖法;在屏幕的固定位置显示动态图像时,可以选择多图片切换法;利用异或方式进行绘图不会发生全屏幕闪动,通常效果较好,但若反复使用,在所清除图像处会产生闪烁,仍不是很完美;像素操作一般和其他动态图像实现方法(如底色覆盖)相结合使用;多缓冲技术是将图形绘制在不同的帧中,通过将屏幕在这些不同的帧之间进行切换,来达到动画效果;具体的帧数目可以根据实际动画的需要自行确定。这类似于C语言中的双缓冲技术原理,只不过双缓冲只绘制一份备用图像作为离屏图像,而多缓冲则将图形绘制在多个不同帧中,将屏幕在这些帧之间进行切换。
因为工业方面大多用C/C++作为嵌入式系统的开发语言,所以这些方法都可用于嵌入式系统动画设计。在Nord-Tec SoftWare开发的Nord-Tec Snow Flakes屏幕保护程序中,逼真的雪花动画便是利用多缓冲技术实现的。
(6)绘制复杂风格线条的方法
在GIS(地理信息系统)类软件设计中,经常需要在绘图时使用一些相对固定但又频繁使用的一些用以代表地理状态的符号,如河流、铁路、海岸线等等。显然,这些基本符号图形一般都是相对复杂的线条,在MFC提供的基本类库中并未提供可以直接使用的相关函数;即使是在绘图功能比较强大的CDC中,也仅仅提供了LineTo()、Set-Pixel()等一些通用的最基本的绘图函数。使用这些函数来绘制GIS基本符号是效率比较低的一种办法,这在大量的绘图操作中将会表现得比较明显,因此不宜提倡。但是,可以通过Windows NT 3.1中首次出现的Win32.API函数LineDDA,来解决这一绘制复杂风格线条的问题。
(7)使用VC实现高速平滑的简单动画的方法
许多软件(特别是游戏软件)的开发中,实现高速平滑的动画需要比较深的技术,如OpenGL、DirectX,并且可能还要开发人员有深厚的数学功底。但是,如果只是在开发嵌入式系统过程中,想为应用程序的界面实现一些动画效果,就可能不用以上这些技术了,更多的是用WindowsAPI提供或MFC封装后的GDI绘图函数来实现。虽然所需动画的复杂程度不高,但作为开发人员,并不能为此就降低对动画效果的要求。因此,需要了解如何用GDI函数来开发平滑无闪、高速的