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函數來開發平滑無閃、高速的