admin 管理员组

文章数量: 1184232


2024年3月10日发(作者:ascii怎么读表)

维普资讯

2007年第1期 福建电脑 139 

基于VB的动画技术 

f 

卢向华,张建建 、 

(洛阳工业高等专科学校计算机系河南洛阳471003) 

【摘要】:本文主要阐述在VB编程环境中实现动画的原理,并通过程序示例介绍用VB创建动画的方法。 

【关键宇】:动画;图像; ̄4q-;属性 

在利用VB开发应用程序的过程中.动画的制作是很常用 

I出eIl,Move 0. ̄bel1.Top 

的,特别是用VB编制一些游戏软件,模拟复杂的生产过程,CAI 

教学的演示等。动画就得尤其重要。在开发VB应用程序时。常 

使用以下方法创作动画。 

1.使用控件通过加载图像实现动画 

动画是一种运动的模拟.其实现方法是在屏幕上快速地显 

示一组组相美的图像.编程时可以采用帧动画原理,即通过一系 

列静态图辅之以连续快速变化产生动画效果.也可以通过1 ̄Iove 

方法改变图形对象的Top及Left属性移动图形来实现.动画的 

速度使用时钟来控制。用这种方法实现动画的基础是图像的显 

示和使图像快速、定时地移动或变化。利用VB中的ImageList、 

PietureBox等控件,通过加入序列图像.用定时器控件的Timer 

事件进行控制.以显示此序列图中不同的图像来达到动画效果。 

1.用M0ve方法实现动画 

利用人眼的视觉暂停现象.连续移动控件和改变控件的大 

小可实现动画。一幅图像的位置不断变化而形成的动画称为单 

帧动画。如滚动字幕,云彩被风吹动等,这种动画通常是在Timer 

事件过程中调用控件的M州e方法控制图像的位置移动来实现 

的。VB中许多控件都能够被移动或改变大小。通过改变控件 

Top.Left属性值可以实现控件位置的变化.控件大小变化是通 

过改变控件的Width、Height属性值实现的。在演示过程中,用 

Move方法不断改变这些属性.就产生了控件移动的动画效果。 

我们在利用Move方法实现动画时.通常和Timer控件联用来改 

变图形的大小和位置实现动画效果 

下面用MO'VC方法来实现文字移动。利用一个标签显示一 

文字。程序启动时,用鼠标左键点击文字,则这行文字将开始飘 

动,如碰到窗体的边界,将改变移动方向;再用鼠标左键点击文 

字.则将停止移动。 

程序代码如下: 

Dim IsPlaying As Boolean 动域是否启动 

Dim DetnX%.DetaY% 沿X、Y轴的移动位置增量 

Private Sub Fom 108d0 

IsPlaying=False 开始时.动i圄i未启动 

DetaX%=100 沿X轴的移动位置增量为lo0单位 

DetaY%=100 滑Y轴的移动位置增量为1o0单位 

End SlJh 

Private Sub labell-cHckO 用鼠标左键点击了标签 

lfl8PlHying rnIen 动域已启动.则停止 

I ̄Playing z FalBe 

Timer1.Enabled=I8Playing 

EIse 动画束启动.则启动 

IsPlaying=True 

TimerI.Enabled=IsPIayin;l 

EndIf 

End Sub 

Private Sub13merl

TjmeIo Timer事件,移动labell对象 

l ̄:Jel1.VIIove Iabel1.Left+Dett ̄X%.1abel1.Top+Deta ̄% 

碰到边界.则校正位置.并反向 

If IabeI1. n+Iabel1.Width)=Fom1.Width Then 碰到右边界 

label1.Move Form1.Width—label1.Width.1abel1.Top 

Deu ̄X%{-DetaX% 

El ̄elf l ̄el1.Top+labeIl,Height). F ̄rm1.Heig【ht Then 碰到上边界 

label1.Move label1.Left,Forml,Hei曲t—labelI,Hei g}It 

DemY%=一netaY% 

Elself label1.hft 0 0 Then 碰到左边界 

DctaX% 一DeU ̄X% 

El ̄eff labell,Top《=0 Then 碰到下边界 

l丑beI1.Move l ̄el1.Left.0 

DetaY%鼻一DetaY% 

EndIf 

End Sub 

注意,文字碰到边界而反向移动。是通过改变DetaX%、De. 

raY%的符号来实现的。 

2 利用显示不同的图象实现动画 

般动画是利用视觉差来实现的.即在短时间内顺序播出 

系列有关联性的图片.让收看者感觉到画面内容动起来的效 

果。自然界的运动大多数都具有多帧位移的特点。即在位置移动 

的同时,状态也在发生变化,如蝴蝶在空中飞舞。蝴蝶的位置在 

变化,同时翅膀也在扇动。这种通过一系列静态图辅之以连续变 

化来产生动画效果需要在Timer事件过程中同时处理image对 

象的图像更替和位置移动。利用这种方法实现动画只要获得一 

幅幅动画单幅图像文件,把它们放入图像控制数组中去.便可以 

用时钟控件的控制属性Interv.I来控制每幅图片显示的间隔。在 

把最终动画显示的位置确定好后.按时问间隔依次从图像控制 

数组中取出一幅显示,如此交替反复显示.产生了动画效果。下 

面的程序是通过改变图形形状演示一个陀螺在图形框内转动。 

程序代码: 

Dim y AsInteger 

Private Sub r ̄ntop0 

Statie Y As Integer 

Y=Y+1:If Y。18Then Y 0 指定陀螺的某张图片 

Pieture1.Picture=Imgel .Picture 图形框装人某张图片 

F ̄rm1.Icon=Imagel .Picture 窗体的Icon属性装人图片 

End Sub 

Private Sub Comm nd1_Click0 

If Con ̄,nand1.Caption=“转动”Then 

Command1.Caption=“停止” 

Else 

Command1.Caption ・・转动“ 

ErId If 

End Sub 

Private Sub 13merl_'rimero 

If ComandI.Caption=”停止”Then mntop 

End Sub 

2.借助图形方法由程序动态产生动画 

Visu-I Basic是一个功能强大的面向对象的编程环境.使用 

它所提供的图形方法.如Pset、Line、Cirlce、Cl8可以在各种事件 

过程中画出包括点、直线、圆(椭圆)、圆弧以及由他们构成的几 

何图形。如果把图形方法用于时问事件。可得到与时间参数相关 

的运动变化的图形.即可以创建动画。用图形方法创建动画是通 

过完成算法来实现的。即动画由程序直接创建,因此动西的制作 

过程简单、编程性强、可控制性好,能够很容易地对动画的路径、 

行为、参数进行控制。使用这种方法创建动画。首先在Tin1er事 

件使用图形方法中的Pset、Line、Circle、Cls等方法在绘图区创建 

图形.可以在绘图区画出运动的点、直线、圆(或椭圆)、圆弧及各 

种形状的填充区。再结合颜色参数,还可以创建动态立体图形。 

但是由于图形不会自动清除.所以还需要根据动画演示的时间、 

速度等因素.在'rimer事件中使用Cls方法,在适当的时间间隔 

内将上次事件中所创建的图形擦除,在Timer(下转第145页) 

维普资讯

2oo7年第1期 福建 电脑 145 

CaeateXMLF'de0 如果两个xml文件不存在。则甸建这两个xml文件 

Me.DataGridViewt 

End If 

btnSave_Cliek(sender,e】 

接着,定义一系列的变量。以存放两个xml文件的具体位 

End Sub 

置,如下代码: 

2.4学生的增加和编辑 

D.啪myDoeumentsFolder As Stirng=My。Computer.FdeSystem.SpeclalDireeto- 

我们要为bmEditAddStudeat这个按钮编写相关代码。新建 

ites.

.. 

个窗体frmEdltAddStudents,在这个窗体中,可以添加删除学 

MyDoeuments 

Dim seoresFileName As String ”kscoms.xnd” 

生。首先,拖拉一个DataGridView控件,增加两个按钮分别命名 

Dim studentsFileName A8 String ” ̄students.xml 

为btnSave和btnDdete。 

P ̄lic e ̄orseFile As String String.Concat(myDocumentsFolder,seoresFile- 

该窗体的10ad事件中,写入如下代码: 

Name) 

Public studentsFile A8 Strign{Strintt.Concat(myDoeumentsFolder,一 

studentsFileName) 

DataGridView1.DataMember f ce6.Dsstudeatseote,studeutsXableNmne0 

注意其中一个用法M .Computer.FileSystem.SpecialDirecto. 

将DataGfidView绑定到DataSet的students文件中去。注意 

8.MyDocuments返回当前计算机上”我的文档”的具体位置。 

这时以fnnscores.Dsstudentscore的形式调用的,因为该Dat ̄et 

这里,将两个文件保存到”我的文档”中去。并且用scoresFile和 

是在第一个窗体中 批o1-es中设立的。 

studentaFile变量,保存两个xml文件实际存取的路径。接下来是 

接着,为保存save按钮编写代码: 

相关几个过程的代码如下: 

Phblic Fhnc‘ion CheckFileExlstenee0 As Boolean 

System.Data.XmlWriteMode.Writesuhema) 

检查两个xIlIl文件是否存在 

而删除按钮delete的代码也一样简单: 

Ir My.Computer.FdeSystem.FihExists(esoresFile)And— 

My.Computer.FdeSystem.FileExist ̄l(student ̄File)Then 

iewt.CurmntPa ̄.Idn.) 

Return True 

bt幽ve_C ck(蛳der.c) 

Else 

最后,在frmseores窗体的btnEditAddstudent按钮中。编写 

Return False 

如下代码,使用户点这个按钮时,可以弹出编辑学生的窗口 

EndIf 

Dimfnnstudents As Newfnnedi- 

End Function 

taddstudents 

Pllblie Sub C ̄eateXMLFile0 

frmstudents.ShowDiahgO 

张三”) 

ts.AddstudentsBow(”李四”、 

现在可以开始运行代码 

WriteXm](stdnenteFde.一 

了。结果如图3所示。 

System.Data.XndWriteMode.Writ ̄%hcma) 

这时.你可以点”编辑,增 

加学生n按钮来添加学生姓 

System.Data.XmlWriteMode-Write.Schema) 

nEd Sub 

名.也可以通过下拉框来选择 

上面的CreateXM删e过程中.设置了一个重要的参数 

学生,输入每门课程的成绩。 

Wri ̄Sehema.以便自动将数据保存到studentsfde和scoresfd'e两 

并对它们进行保存和删除.而 

个文件中,并且自动将xfnl的8chema模式保存起来。只有这样 

这一切。全部是通过使用.NET 2.0中X.ML的新特性来实现的。 

才能将两个文件之间的在数据表上对应的关系保存起来。这是. 

3 结论 

NET 2.O中新增加的功能t31。 

本文以学生成绩管理程序为例,介绍了采用.net 2.0。将所有 

Public Sub LondDataust0 

的数据都存储在XML文件中的实现方法和过程。详细描述了同 

(stdnentsHle) 

时在Data.Set里实现读和写多个XML文件.将XML文件绑定到 

EndSub 

DataGridView控件.以及并用DataGridVieW控件读和写XML文 

上面的LoadDataSet过程.十分简单.分别读取两个xfnl文 

件中的数据的机理和过程。 

件。在.NET 2.0中,可以同时在一个DataSet里加载多个xml文 

件,而在.NET 1.x中,这是很难做到的。 

参考文献: 

保存和删除数据的代码如下: 

1.陈富拳.基于XML的ASP.NET的开发与应用.妾擞工程抖挂学院学 

Private Sub btnSave

报。2004,l9(3):59—63 

_

Click<SyW sender As System Object,Byvd e AB s, 

etm。一 

2.http:llwww。microsoft.cOm/chiIl1/Insdn/ 

EventArgs)Handles btnSave.Click 

3.http://www.devx.corn/ 

^le Dsstudentseore.scorseJteceptChaages0 

4.郭广军。刘凰龙,胡玉平。.NET中基于XML的异构数据转换技术的研 

Me.Dsstudentseore. ̄1OI385.WriteXml(seoresFile.System.Data.XralWriteMode.一 

究。征型机与应用,2005。24(4).7-9+39 

WriteSeherna) 

nEd Sub 

5.钟山.应用ASP.net+xml技术建立在绒学生信息录入系统.广西大学栝 

Private USb btnDelete Click03yW sender As System.Object.ByVal e As Sys- 

州分枝学报,2005,15(3):94-97 

tem. 

EveatAr ̄)Handles bmDelete.Click 

(上接第139页) 

件中使用Cls方法。则绘图区只留下当前时刻面出的图形。例如 

参考文献: 

可以在Timer事件中通过使用Line方法画直线来创建一个以弹 

1,葬沸增、陆慰民-V al Basic程序设计简明教程.高等羲育出版杜.2003 

簧作为传播媒质并按时间、波长、周期、波的密度等参数进行演 

2.陆斌、何友空.基于vb的动画方法麓应甩.擞机发展.2003 

绎的纵波动画演示。 

3.王文斌.在、,b中实现动画设计的常用方法.河南教育学院学报.2004 


本文标签: 动画 方法 实现 图形 移动