Visual Basic 动画编程技术

ZDNet软件频道 时间:2002-09-09 作者:VB编程乐园 |  我要评论()
本文关键词:
在Visual Basic中利用Image和Timer控件能很方便地实现动画。本文将介绍Visual Basic动画编程的基本原理和实现三种不同类型动画的编程技术。
在Visual Basic中利用Image和Timer控件能很方便地实现动画。本文将介绍Visual Basic动画编程的基本原理和实现三种不同类型动画的编程技术。

一、基本原理

动画是一种运动的模拟,其实现方法是在屏幕上快速地显示一组相关的图象。因此实现动画的基础是图象的显示和使图象快速、定时地移动或变化。在Visual Basic中,用LoadPicture函数将BMP、ICO和WMF格式的图象文件装入内存,并将函数返回值赋予Image对象的Picture属性,便能在Image对象中显示图象。使图象移动或变化的基本方法有三种,即:
1.用Image对象的Move方法移动图象,其Left和Top属性指示了Image对象的当前左上角位置;
2.调用LoadPicture函数装载不同的图象,并赋给Image对象的Picture属性,将在对象中显示不同的图象,即实现图象变化;
3.修改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,并按下表设置它们的属性,未列出的属性使用缺省值。
对象
属性
设置值
Image1
Picture
...(工程文件所处路径)Book1.bmp
Timer1
Enabled
False

Interval
150

程序代码如下:
Option Explicit ‘变量必须先定义,才能使用
Dim ImageNo% ‘当前的位图编号
Dim IsPlaying As Boolean ‘动画是否启动

Private Sub Form_Load()
IsPlaying = False ‘开始时,动画未启动
Image1.ToolTipText = "开始" ‘鼠标移到书上时,将出现“开始”提示
ImageNo% = 1 ‘动画从book1.bmp开始
End Sub

Private Sub Image1_Click() ‘用鼠标左键点击了书
If IsPlaying Then ‘动画已启动,则停止
IsPlaying = False
Timer1.Enabled = IsPlaying
Image1.ToolTipText = "开始"
Else ‘动画未启动,则启动
IsPlaying = True
Timer1.Enabled = IsPlaying
Image1.ToolTipText = "停止"‘鼠标移到书上时,将出现“停止”提示
End If
End Sub

Private Sub Timer1_Timer() ‘Timer事件
ImageNo% = ImageNo% + 1 ‘动画下一帧
If ImageNo% > 4 Then ‘如果动画已到最后一帧,则
ImageNo% = 1 ‘再从第一帧开始
End If


`在Image对象中显示动画的当前帧
Image1.Picture = LoadPicture(App.Path & "book" & ImageNo% & ".bmp")
End Sub

代码中App.Path指定了当前应用程序所在的路径。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134