在VisualBasic中利用Image和Timer控制項能很方便地實作動畫。本文將介紹VisualBasic動畫程式設計的基本原理和實作三種不同類型動畫的程式設計技術。
一、基本原理
----動畫是一種運動的模擬,其實現方法是在螢幕上快速地顯示一組相關的圖象。因此實現動畫的基礎是圖象的顯示和使圖象快速、定時地移動或變化。----在VisualBasic中,以LoadPicture函數將BMP、ICO和WMF格式的圖象檔案裝入內存,並將函數傳回值賦予Image物件的Picture屬性,便能在Image物件中顯示圖象。使圖象移動或變化的基本方法有三種,即:
----Timer物件的Enabled屬性決定了Timer事件是否有效。設定Enabled屬性為True將啟動Timer事件(如啟動動畫);為False則將使Timer事件無效(如停止動畫)。
二、無位移動畫
----無位移動畫是指動畫物件不移動,但圖像不斷變化,其典型例子是翻書。實作無位移動畫的方法是,設定好Image物件和Timer物件後,在Timer事件過程中呼叫呼叫LoadPicture函數來裝載不同的圖象,並賦予Image物件的Picture屬性,使物件中顯示不同的圖象,即實現圖象變化。----下面是翻書動畫的範例。程式啟動時,在窗體中顯示一本翻開的書,用滑鼠左鍵點擊書,則會開始翻書;再用滑鼠左鍵點擊書,則書將停止翻動。點陣圖檔book1.bmp~book4.bmp分別表現了翻書時,正在翻的書頁的不同位置,它們存放在目前工程所在的目錄中。
----在需要顯示動畫的窗體(Form1)中設定Image物件Image1和Timer物件Timer1,並按下表格設定它們的屬性,未列出的屬性使用預設值。
.
.
.
三、單幀位移動畫
----單幀位移動畫,是指同一幅圖象的位置不斷變化而形成的動畫,其典型實例時雲彩被風吹動。編製單幀位移動畫的方法是在Timer事件過程中呼叫Image物件的Move方法來移動圖象。----下面是雲彩移動的例子。程式啟動時,在窗體中顯示一朵雲,用滑鼠左鍵點擊雲,則雲彩將開始飄動,如碰到窗體的邊界,雲彩將改變移動方向;再用滑鼠左鍵點擊雲,則雲將停止移動。點陣圖檔案cloud.bmp存放在目前工程所在的目錄中。
----在需要顯示動畫的窗體(Form1)中設定Image物件Image1和Timer物件Timer1,並按下表格設定它們的屬性,未列出的屬性使用預設值。
.
.
.
----注意,雲彩碰到邊界而反向移動,是透過改變DetaX、DetaY的符號來實現的。四、多幀位移動畫
----多幀位移動畫是最複雜的動畫,綜合了無位移動畫和單幀位移動畫的特徵。自然界的運動大多具有多幀位移的特點,如小鳥的飛翔,在小鳥位置的移動的同時,其翅膀也在扇動。實現多幀位移動畫需要在Timer事件過程中同時處理Image物件的圖象更替和位置移動。----下面是小鳥飛翔的例子。程式啟動時,在窗體中顯示一隻小鳥,用滑鼠左鍵點擊它,則小鳥將開始扇翅飛翔,如碰到窗體的邊界,小鳥將改變飛翔方向;再用滑鼠左鍵點擊小鳥,則小鳥將停止飛翔。點陣圖檔bird1.bmp~bird4.bmp分別表現了小鳥飛翔時,其翅膀的不同位置,它們存放在目前工程所在的目錄中。
----在需要顯示動畫的窗體(Form1)中設定Image物件Image1和Timer物件Timer1,並按下表格設定它們的屬性,未列出的屬性使用預設值。
.
.
.
五、縮放動畫
----氣球的膨脹或縮小是縮放動畫的典型例子。在Timer事件過程中修改Image物件的Width和/或Height屬性,便可實現縮放動畫。但如果要表現物體的同心縮放,則還應同時還需移動Image物件。----下面是模擬氣球在空中縮放(同心)的例子。程式啟動時,在窗體中顯示一隻氣球,用滑鼠左鍵點擊它,則氣球將開始膨脹,如碰到窗體的邊界,氣球將縮小,縮小到原來大小時,又將膨脹;再用滑鼠左鍵點擊氣球,則氣球將停止縮放。點陣圖檔Balloon.bmp存放在目前工程所在的目錄中。
----在需要顯示動畫的窗體(Form1)中設定Image物件Image1和Timer物件Timer1,並按下表格設定它們的屬性,未列出的屬性使用預設值。
物件
屬性
設定值
Image1
Picture
...(工程文件所處路徑)/Balloon.bmp
.
.
.
->