嵌入式系統(tǒng)中動畫設(shè)計方法的適用度分析
(7)使用VC實現(xiàn)高速平滑的簡單動畫的方法
許多軟件(特別是游戲軟件)的開發(fā)中,實現(xiàn)高速平滑的動畫需要比較深的技術(shù),如OpenGL、DirectX,并且可能還要開發(fā)人員有深厚的數(shù)學(xué)功底。但是,如果只是在開發(fā)嵌入式系統(tǒng)過程中,想為應(yīng)用程序的界面實現(xiàn)一些動畫效果,就可能不用以上這些技術(shù)了,更多的是用WindowsAPI提供或MFC封裝后的GDI繪圖函數(shù)來實現(xiàn)。雖然所需動畫的復(fù)雜程度不高,但作為開發(fā)人員,并不能為此就降低對動畫效果的要求。因此,需要了解如何用GDI函數(shù)來開發(fā)平滑無閃、高速的動畫。
該技術(shù)的關(guān)鍵就是在內(nèi)存中創(chuàng)建一個與顯示動畫的窗口區(qū)域一樣大的位圖,先用GDI函數(shù)繪制位圖,然后在適當(dāng)?shù)臅r候從內(nèi)存中顯示出來。因為位圖已經(jīng)繪制好,不象平時編程那樣邊繪制邊顯示,所以,顯示一幀圖形時便減少了閃爍,從而實現(xiàn)平滑動畫;同時,由于圖形是從內(nèi)存中直接顯示到當(dāng)前窗體的,所以速度很快,從而實現(xiàn)高速動畫。如果再創(chuàng)建一個線程后臺繪制圖形,將會實現(xiàn)很多特殊效果的動畫,使嵌入式系統(tǒng)的用戶界面收到意想不到的效果。
在此基礎(chǔ)上,還可以在顯示位圖時作優(yōu)化顯示。例如:不是將位圖全部顯示出來,而是顯示其中動畫的一部分,因為BitBlt函數(shù)作位傳輸很慢。這樣更符合嵌入式系統(tǒng)重視效率的特點。本文引用地址:http://butianyuan.cn/article/152229.htm
2 需要安裝第三方軟件的動畫設(shè)計方法分析
(1)為教學(xué)研究開發(fā)的嵌入式設(shè)備可使用Ubigraph
graphviz和Ubigraph都是圖論生成軟件,但Ubig-raph功能更強,利用它可以快速生成圖論模型的圖形和動態(tài)圖像,直觀地展示出各種圖論模型的三維結(jié)構(gòu),演示各種圖論算法的過程。因為可以嵌入到Java、C、C++等語言中,所以當(dāng)然適合用于嵌入式系統(tǒng)的動畫設(shè)計,尤其是一些專門為教學(xué)研究開發(fā)的嵌入式設(shè)備。
(2)Flash對嵌入式系統(tǒng)而言太過華麗
Flash是一種功能強大的矢量動畫軟件,但是所用到的高級技術(shù)比較多,不過為了能夠做出精美的電影特技效果的動畫,還是值得對其進(jìn)行深入研究的。然而,對于嵌入式系統(tǒng)開發(fā)而言,它實在是太過華麗了;如果不是特別需要突出游戲或者動畫的精致效果,一般開發(fā)者應(yīng)該不會舍本逐末以此來犧牲系統(tǒng)的速度和容量。
(3)DirectDraw方法對嵌入式系統(tǒng)的適用度
DirectDraw使用頁面切換的方法實現(xiàn)圖像動態(tài)。它不僅可以訪問系統(tǒng)內(nèi)存,還可以訪問顯示內(nèi)存,實現(xiàn)圖像動態(tài)的同時不會使得畫面閃爍,是一種“完美切換”技術(shù);因此DirectDraw技術(shù)很受程序員青睞,尤其在虛擬現(xiàn)實技術(shù)中應(yīng)用廣泛。但是,顯而易見,該方法需要占用很大內(nèi)存,安裝所需的開發(fā)文件同樣需要較大硬盤空間,應(yīng)用到一般的嵌入式系統(tǒng)中,對反應(yīng)速度等的限制將會比較明顯。
其實,用DirectDraw編程的核心要點即“幾個表面之間拷來拷去”。在對界面的動畫復(fù)雜程度要求不高的嵌入式系統(tǒng)中,可以采用C程序作為開發(fā)語言,并且在動畫實現(xiàn)方法上,利用前述C程序設(shè)計中顯示頁和編輯頁交替變化的方法,來代替幾個表面交替拷貝的DirectDraw方法。然而,如果是大型的嵌入式系統(tǒng),并且重視界面動畫效果,采用DirectDraw方法和面向?qū)ο箝_發(fā)語言,仍然是更好的選擇。
當(dāng)然,若對美術(shù)工藝有特殊要求,可以嘗試將更專業(yè)的技術(shù)(如顏色鎖結(jié)及用于3D效果的Z排序與視差)引入到嵌入式系統(tǒng)軟件設(shè)計中――這種系統(tǒng)本身也應(yīng)該是專業(yè)的、功能專用的,否則只能停留在理論上,難以實現(xiàn)!
3 可用于嵌入式系統(tǒng)開發(fā)的腳本語言
當(dāng)動畫應(yīng)用于網(wǎng)絡(luò)時,可以選擇直接使用腳本語言設(shè)計,譬如JSP、PHP等。當(dāng)今的很多嵌入式系統(tǒng)都有連接網(wǎng)絡(luò)的需求和相應(yīng)功能,雖然大多數(shù)系統(tǒng)的屏幕動畫都不涉及對外發(fā)布的問題,但在聯(lián)網(wǎng)嵌入式系統(tǒng)的開發(fā)中直接使用腳本語言編寫動畫,也不啻為一個新的思路。
Python可作為嵌入式系統(tǒng)的開發(fā)語言(在Nokia智能手機所采用的Symbian操作系統(tǒng)上已得到證明)。它最大的優(yōu)勢是能夠很輕松地把使用其他語言制作的各種模塊(尤其是C/C++)輕松地聯(lián)結(jié)在一起。由此,既可以直接使用Py-thon編寫簡單的界面動畫,也可以將對速度要求更高的復(fù)雜動畫使用C++語言編寫后嵌入到Python程序中。
評論