在VisualBasic中利用Image和Timer控件能很方便地实现动画。本文将介绍VisualBasic动画编程的基本原理和实现三种不同类型动画的编程技术。
一、基本原理
—-动画是一种运动的模拟,其实现方法是在屏幕上快速地显示一组相关的图象。因此实现动画的基础是图象的显示和使图象快速、定时地移动或变化。
—-在VisualBasic中,用LoadPicture函数将BMP、ICO和WMF格式的图象文件装入内存,并将函数返回值赋予Image对象的Picture属性,便能在Image对象中显示图象。使图象移动或变化的基本方法有三种,即:
- 用Image对象的Move方法移动图象,其Left和Top属性指示了Image对象的当前左上角位置;
- 调用LoadPicture函数装载不同的图象,并赋给Image对象的Picture属性,将在对象中显示不同的图象,即实现图象变化;
- 修改Image对象的Width和/或Height属性可以缩放图象。
—-使用Timer控件可以实现定时控制。Timer对象的Interval属性设置了定时间隔,即调用Timer事件过程的时间间隔。在Timer事件过程中处理控制Image对象的移动或变化,便能实现动画。Timer对象的Interval值决定了动画的变化或移动速度,其单位是毫秒(1/1000秒)。
—-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
.
.
.
->