在VisualBasic中利用Image和Timer控件能很方便地實(shí)現(xiàn)動(dòng)畫。本文將介紹VisualBasic動(dòng)畫編程的基本原理和實(shí)現(xiàn)三種不同類型動(dòng)畫的編程技術(shù)。
一、基本原理
----動(dòng)畫是一種運(yùn)動(dòng)的模擬,其實(shí)現(xiàn)方法是在屏幕上快速地顯示一組相關(guān)的圖象。因此實(shí)現(xiàn)動(dòng)畫的基礎(chǔ)是圖象的顯示和使圖象快速、定時(shí)地移動(dòng)或變化。----在VisualBasic中,用LoadPicture函數(shù)將BMP、ICO和WMF格式的圖象文件裝入內(nèi)存,并將函數(shù)返回值賦予Image對(duì)象的Picture屬性,便能在Image對(duì)象中顯示圖象。使圖象移動(dòng)或變化的基本方法有三種,即:
----Timer對(duì)象的Enabled屬性決定了Timer事件是否有效。設(shè)置Enabled屬性為True將啟動(dòng)Timer事件(如啟動(dòng)動(dòng)畫);為False則將使Timer事件無效(如停止動(dòng)畫)。
二、無位移動(dòng)畫
----無位移動(dòng)畫是指動(dòng)畫對(duì)象不移動(dòng),但圖象不斷變化,其典型例子是翻書。實(shí)現(xiàn)無位移動(dòng)畫的方法是,設(shè)置好Image對(duì)象和Timer對(duì)象后,在Timer事件過程中調(diào)用調(diào)用LoadPicture函數(shù)裝載不同的圖象,并賦予Image對(duì)象的Picture屬性,使對(duì)象中顯示不同的圖象,即實(shí)現(xiàn)圖象變化。----下面是翻書動(dòng)畫的例子。程序啟動(dòng)時(shí),在窗體中顯示一本翻開的書,用鼠標(biāo)左鍵點(diǎn)擊書,則將開始翻書;再用鼠標(biāo)左鍵點(diǎn)擊書,則書將停止翻動(dòng)。位圖文件book1.bmp~book4.bmp分別表現(xiàn)了翻書時(shí),正在翻的書頁的不同位置,它們存放在當(dāng)前工程所在的目錄中。
----在需顯示動(dòng)畫的窗體(Form1)中設(shè)置Image對(duì)象Image1和Timer對(duì)象Timer1,并按下表設(shè)置它們的屬性,未列出的屬性使用缺省值。
.
.
.
三、單幀位移動(dòng)畫
----單幀位移動(dòng)畫,是指同一幅圖象的位置不斷變化而形成的動(dòng)畫,其典型實(shí)例時(shí)云彩被風(fēng)吹動(dòng)。編制單幀位移動(dòng)畫的方法是在Timer事件過程中調(diào)用Image對(duì)象的Move方法來移動(dòng)圖象。----下面是云彩移動(dòng)的例子。程序啟動(dòng)時(shí),在窗體中顯示一朵云,用鼠標(biāo)左鍵點(diǎn)擊云,則云彩將開始飄動(dòng),如碰到窗體的邊界,云彩將改變移動(dòng)方向;再用鼠標(biāo)左鍵點(diǎn)擊云,則云將停止移動(dòng)。位圖文件cloud.bmp存放在當(dāng)前工程所在的目錄中。
----在需顯示動(dòng)畫的窗體(Form1)中設(shè)置Image對(duì)象Image1和Timer對(duì)象Timer1,并按下表設(shè)置它們的屬性,未列出的屬性使用缺省值。
.
.
.
四、多幀位移動(dòng)畫
----多幀位移動(dòng)畫是最復(fù)雜的動(dòng)畫,綜合了無位移動(dòng)畫和單幀位移動(dòng)畫的特點(diǎn)。自然界的運(yùn)動(dòng)大多數(shù)都具有多幀位移的特點(diǎn),如小鳥的飛翔,在小鳥位置的移動(dòng)的同時(shí),其翅膀也在扇動(dòng)。實(shí)現(xiàn)多幀位移動(dòng)畫需要在Timer事件過程中同時(shí)處理Image對(duì)象的圖象更替和位置移動(dòng)。----下面是小鳥飛翔的例子。程序啟動(dòng)時(shí),在窗體中顯示一只小鳥,用鼠標(biāo)左鍵點(diǎn)擊它,則小鳥將開始扇翅飛翔,如碰到窗體的邊界,小鳥將改變飛翔方向;再用鼠標(biāo)左鍵點(diǎn)擊小鳥,則小鳥將停止飛翔。位圖文件bird1.bmp~bird4.bmp分別表現(xiàn)了小鳥飛翔時(shí),其翅膀的不同位置,它們存放在當(dāng)前工程所在的目錄中。
----在需顯示動(dòng)畫的窗體(Form1)中設(shè)置Image對(duì)象Image1和Timer對(duì)象Timer1,并按下表設(shè)置它們的屬性,未列出的屬性使用缺省值。
.
.
.
五、縮放動(dòng)畫
----氣球的膨脹或縮小是縮放動(dòng)畫的典型例子。在Timer事件過程中修改Image對(duì)象的Width和/或Height屬性,便可實(shí)現(xiàn)縮放動(dòng)畫。但如果要表現(xiàn)物體的同心縮放,則還應(yīng)同時(shí)還需移動(dòng)Image對(duì)象。----下面是模擬氣球在空中縮放(同心)的例子。程序啟動(dòng)時(shí),在窗體中顯示一只氣球,用鼠標(biāo)左鍵點(diǎn)擊它,則氣球?qū)㈤_始膨脹,如碰到窗體的邊界,氣球?qū)⒖s小,縮小到原來大小時(shí),又將膨脹;再用鼠標(biāo)左鍵點(diǎn)擊氣球,則氣球?qū)⑼V箍s放。位圖文件Balloon.bmp存放在當(dāng)前工程所在的目錄中。
----在需顯示動(dòng)畫的窗體(Form1)中設(shè)置Image對(duì)象Image1和Timer對(duì)象Timer1,并按下表設(shè)置它們的屬性,未列出的屬性使用缺省值。
對(duì)象
屬性
設(shè)置值
Image1
Picture
...(工程文件所處路徑)/Balloon.bmp
.
.
.
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注