在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,并按下表設置它們的屬性,未列出的屬性使用缺省值。
.
.
.
四、多幀位移動畫
----多幀位移動畫是最復雜的動畫,綜合了無位移動畫和單幀位移動畫的特點。自然界的運動大多數都具有多幀位移的特點,如小鳥的飛翔,在小鳥位置的移動的同時,其翅膀也在扇動。實現多幀位移動畫需要在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
.
.
.
新聞熱點
疑難解答