凃紅玲
摘 要:隨著計(jì)算機(jī)圖形學(xué)的發(fā)展,動(dòng)畫技術(shù)廣泛應(yīng)用于動(dòng)畫制作、數(shù)字影像制作、廣告、輔助教學(xué)、游戲等方面,人們對(duì)動(dòng)畫技術(shù)的興趣也與日俱增,C語(yǔ)言豐富的圖形處理函數(shù)為實(shí)現(xiàn)動(dòng)畫仿真提供了極大的便利。該文探究了在單頁(yè)面與多頁(yè)面下動(dòng)畫技術(shù)的實(shí)現(xiàn)及畫面存儲(chǔ)、重放動(dòng)畫技術(shù)的實(shí)現(xiàn)。
關(guān)鍵詞:動(dòng)畫 XOR 單頁(yè)面 多頁(yè)面 庫(kù)函數(shù)
中圖分類號(hào):G412 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2014)10(b)-0019-01
動(dòng)畫一般由兩個(gè)部分構(gòu)成:動(dòng)畫環(huán)境(背景)和動(dòng)畫物體(前景)。多數(shù)情況下,產(chǎn)生動(dòng)畫效果只需要改變屏幕中一個(gè)前景運(yùn)動(dòng)物體在畫面中的位置,而其背景和動(dòng)畫物體的開關(guān)一般保持不變,因此就需要重復(fù)進(jìn)行顯示、擦除,在新的位置上顯示這一過(guò)程從而實(shí)現(xiàn)動(dòng)畫,而動(dòng)畫的實(shí)現(xiàn)又可以分為單頁(yè)面與多頁(yè)面動(dòng)畫實(shí)現(xiàn)。利用C語(yǔ)言豐富的庫(kù)函數(shù)可以實(shí)現(xiàn)動(dòng)畫效果及動(dòng)畫的存儲(chǔ)、重放。
1 單頁(yè)面動(dòng)畫技術(shù)
單頁(yè)面動(dòng)畫技術(shù)是將動(dòng)畫物體的圖象保存在存儲(chǔ)區(qū)中,需要時(shí)快速?gòu)膬?nèi)存中拷貝回屏幕進(jìn)行重新顯示,并通過(guò)對(duì)該圖象象素與背景象素進(jìn)行XOR(異或)運(yùn)算,是被前景所遮蓋的背景圖像部分還原,從而達(dá)到動(dòng)畫效果。
在C語(yǔ)言中,庫(kù)函數(shù)putimage將內(nèi)存中所存儲(chǔ)的圖像回送到屏幕任意指定位置上,若將函數(shù)里的參數(shù)OP定義為XOR_PUT,
就可以使內(nèi)存中源圖像同背景圖像按位進(jìn)行“異或”,利用XOR的“還原”特性,即當(dāng)XOR操作后象素值便發(fā)生改變,然后再作一次XOR運(yùn)算又可把原象素值還原,可對(duì)屏幕上的一個(gè)運(yùn)動(dòng)物體連續(xù)作XOR運(yùn)算,而不必?fù)?dān)心背景圖形的存儲(chǔ)與還原問(wèn)題。因此,在運(yùn)動(dòng)物體的同一顯示位置上連續(xù)進(jìn)行兩次XOR運(yùn)算,然后在下一顯示位置坐同樣的操作,反復(fù)進(jìn)行,就可使前景運(yùn)動(dòng)圖形產(chǎn)生動(dòng)畫效果。下面就是一個(gè)單頁(yè)面顯示的動(dòng)畫實(shí)例。
2 多頁(yè)面動(dòng)畫技術(shù)
對(duì)于有兩個(gè)以上顯示頁(yè)面的圖形工作模式,可以采用多頁(yè)面動(dòng)畫技術(shù)來(lái)實(shí)現(xiàn)動(dòng)畫。其基本思想是將一頁(yè)作為顯示頁(yè),另一頁(yè)作為繪圖頁(yè),這是一個(gè)交替過(guò)程,即當(dāng)一個(gè)可見(jiàn)頁(yè)面用于顯示時(shí),另一個(gè)關(guān)閉頁(yè)用于繪圖;當(dāng)新的畫面生成后,就把兩頁(yè)進(jìn)行轉(zhuǎn)換,原來(lái)作為顯示用的頁(yè)面再用來(lái)繪制新的圖形。一般第一頁(yè)用于顯示動(dòng)畫過(guò)程的第1、3、5……幅畫面,第二頁(yè)用于顯示動(dòng)畫過(guò)程的第2、3、6……幅畫面,如此交替下去,圖形的擦除和重畫過(guò)程都在“后臺(tái)”進(jìn)行,屏幕上出現(xiàn)的僅是整幅畫面的瞬間切換,以此來(lái)達(dá)到動(dòng)畫效果。該技術(shù)利用庫(kù)函數(shù)setactivepage()與setvisualpage()來(lái)實(shí)現(xiàn)動(dòng)畫。下面就是一個(gè)多頁(yè)面顯示的動(dòng)畫實(shí)例。
3 畫面存儲(chǔ)、重放動(dòng)畫技術(shù)
畫面存儲(chǔ)、重放動(dòng)畫技術(shù)類似幻燈片的制作過(guò)程,其基本思想是把整個(gè)動(dòng)畫過(guò)程劃分為一個(gè)個(gè)片斷,將每一片斷作為一幅畫在屏幕上一指定的區(qū)域顯示出來(lái),然后把屏幕上的圖像存入一個(gè)文件中。在動(dòng)畫顯示時(shí),按順序不斷推出這些畫面,從而產(chǎn)生動(dòng)畫效果。該技術(shù)利用庫(kù)函數(shù)getimage()和putimage()來(lái)實(shí)現(xiàn)動(dòng)畫。編程分兩步進(jìn)行,一是生成畫面與畫面存儲(chǔ)。二是畫面重放。為了加快動(dòng)畫速度,可以先將圖形數(shù)據(jù)依次讀出,建立一鏈表,然后對(duì)此鏈表進(jìn)行操作。鑒于篇幅,就不給出實(shí)例編程。
4 結(jié)語(yǔ)
動(dòng)畫實(shí)現(xiàn)的方法是多種多樣的,我們?cè)诠こ涕_發(fā)、計(jì)算機(jī)設(shè)計(jì)、游戲開發(fā)等諸方面都要采用動(dòng)畫技術(shù),利用動(dòng)畫突出事物特征的功能可以使我們開發(fā)的軟件生動(dòng)形象、科學(xué)合理。只要我們?cè)趯?shí)際應(yīng)用中,利用C語(yǔ)言豐富的庫(kù)函數(shù)進(jìn)行科學(xué)設(shè)計(jì),靈活應(yīng)用,就會(huì)使自己設(shè)計(jì)的動(dòng)畫達(dá)到理想的效果。
參考文獻(xiàn)
[1] 譚浩強(qiáng).C程序設(shè)計(jì)[M].2版.清華大學(xué)出版社,2002.
[2] 朱劍平.軟件開發(fā):編程與設(shè)計(jì)(C語(yǔ)言版)[M].清華大學(xué)出版社,2006.endprint