庞大资源库的计算机教程网站!
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
首页 操作系统 程序设计 图形图像 媒体动画 机械电子 WEB开发 数 据 库 办公系列 路由技术 网络原理 网络应用
认证考试 安全技术
首页>程序设计>VB专区>编程技巧>正文
资料搜索
Google搜索
Google
返回上级列表

推荐文章

快速保存网页中所有图片的方法
Windows中让光驱巧妙“隐身”技
防范非法用户入侵Win 2000/XP系
两款比较典型的ASP木马防范方法
有关表格边框的css语法整理
Windows XP中可以被禁用的服务
SQL Server导出导入数据方法
Javascript所有对象的属性的获
网页(HTML)中的特殊字符
与篮球共舞,尽显模式本色
QQ病毒的手工清除方法
Photoshop为极品美女打造性感睫
天衣无缝:IIS与PHP水火也相容
SQL Server存储过程编写和优化

在VB应用软件中实现动画效果

 作者:余鑫铭    日期:2005-8-4 11:34:17
字号选择〖 〗/ 双击滚屏 单击停止   
在开发VB应用程序中,加入了动画之后可使软件具有生动活泼的效果,而且,在编写组态软件中,动画功能更是必不可少,如容器中容量的变化、液体液面的变化等,实际也是一种动画效果。在中科院空间中心开发的“电场和电导率监测网中心站专家系统”中,有多处使用动画效果,现简明介绍如下。

---- 一、使用Animation控件

---- 在VB5.0中可以使用Animation控件实现动画,实例如下:

Private Sub Animation1_Click ()
With CommonDialog1
Filter = "avi (*.avi)|*.avi"   
 过滤器指定在对话框的文件列表框中显示文件的类型
.ShowOpen          
 显示“打开”对话框
End With
With Animation1
.Autoplay = True    

---- 一旦将 .avi 文件加载到 Animation 控件中,则 .avi 文件 将连续循环的自动播放。

.Open CommonDialog1.Filename  

---- 打开一个将要播放的 .avi 文件。如果 AutoPlay 属性为 True,则只要加载该文件便可。

End With
End Sub

---- Animation 控件不能播放含有声音数据的 .avi 文件。此外,动画控件只能显示未压缩的或用行程编码 (RLE) 压缩的 .avi 文件。当用文件调用 Open 方法时,如果该文件含有声音数据,或不具备特定的压缩格式,则返回错误。

---- 二、使用AniPushButton(AniButton)控件

---- 受WINDOWS/NT超级终端动画效果的影响,笔者也希望在开发的应用软件中加入转动地球的效果。首先用PHOTOSHOP制作一些图画,地球的图像是用一个地球仪临摹取得的,每次将地球仪转动一个固定的角度,得到一幅不同角度地球的图像,重复多次,且将每一幅图存为一个.bmp文件,供AniPushButton调用。

---- AniPushButton控件包含了大量的属性、方法、事件供开发人员使用。首先在Picture和Frame属性中装入图像文件,Picture属性可以装入多幅图像文件,帧Frame属性是Picture属性装入图像文件的索引,Frame属性是1对应第一个图像文件,注意,Frame 只能从1开始,而图像数组可以从0开始,这两个属性可以在属性设计时设置,也可以在程序中设置,Picture属性可以装入.bmp、.ico、.wmf等文件,其他格式的图像文件可以用PHOTOSHOP或SEA等文件进行格式转换,在动画的图像文件装入时,不是装入一幅图像文件,而是要在Frame属性的控制下,装入多幅图像文件,Frame为1,Picture装入第一幅图像文件,Frame为2,Picture装入第二幅图像文件,依次类推,将可产生动画效果的各种图像依次装入Picture属性中。

---- PicDrawMode属性用于设置显示图像与装入图像之间的比例关系。0为控制按设计的大小装入图像,1为控制按图像的大小自动调整边框的大小,2为图像按控制的大小放大或缩小原图 Caption属性,为了不影响动画的效果,这里清空Caption属性。

---- Speed属性,表示动态切换每幅图的速度,以毫秒ms为单位,值越大,切换速度越慢。

---- SpecialOp属性,该属性在设计时无效,只有在程序运行时软件设置,为1时,表示模拟鼠标的Click操作,不由用户操作触发,而由系统自动触发动画按钮,使控制执行Click功能,在下面的软件中使用定时器来激活该功能。在下面的程序中,用到的一些参数值,包括Picture和Frame都是在程序中设置的,不是在属性对话框中设置的。

Private Sub Form_Load()
With timer1        设定时器属性
.Enabled = False
.Interval = 600
End With
With AniPushButton1   设AniPushButton1各属性
.Enabled = True       激活
.Cycle = 0
.Caption = ""
.PictDrawMode = 1   按图像的大小自动调整
.Speed = 200        帧切换速度
.Frame = 1     用LoadPicture方法给Picture属性赋值
.Picture = LoadPicture("c:\earth1.bmp ")
.Frame = 2
.Picture = LoadPicture("c:\earth2.bmp")
.Frame = 3
.Picture = LoadPicture("c:\earth3.bmp")
.Frame = 4
.Picture = LoadPicture("c:\earth4.bmp")
.Frame = 5
.Picture = LoadPicture("c:\earth5.bmp")
End With

End Sub

Sub Cmd_Start_Click ()   开始命令按钮启动定时器
timer1.Enabled = -1
End Sub

Sub Timer1_Timer ()
AniButton1.SpecialOp = 1   实现鼠标的Click操作
End Sub

---- 三、使用PictureClip控件实现动画

---- 该控件提供了存储多个图像信息的技术,其访问方式不是向AniPushButton依次切换每幅图像,而是先将多幅图像依次有序存放在一个.bmp文件中,.bmp中的图像将被均匀分割成许多小块,每一块作为动画切换的一幅图。

---- 下面的程序将实现一个转动陀螺的动画效果。

---- 在程序的声明段定义变量:

Dim y As Integer
Dim toggle As Integer

Private Sub Form_Load()
  picture1.Picture = PictureClip1.
   GraphicCell(0)  使用第一幅为开始帧
    y = 0
    toggle=0
End Sub

Private Sub cmd_onoff_Click()  开关命令按钮
    If toggle = 0 Then
        cmd_onoff.Caption = "停止"
        toggle = 1
    Else
        cmd_onoff.Caption = "旋转"
        toggle = 0
    End If
End Sub
Private Sub Timer1_Timer()
If toggle = 1 Then spin   满足条件,调图切换子程序
End Sub
Private Sub spin()
        y = y + 1: If y = 17 Then y = 0
        picture1.Picture = PictureClip1.
        GraphicCell(y)  图切换一帧
End Sub

---- 在上面的程序中,使用了命令按钮、图片控件、定时器和图像剪切控件等功能,其中最主要的是制作图像文件。图像文件制作分两个过程,首先制作单个的图像文件,然后,将这些图像文件合并成一个图像文件,存于一个.bmp文件中,在图像合成时可使用WINDOWS/95中的“画图”,用粘贴的方法完成。注意,在图像合成时,应设置状态栏参数以确定图像的精确位置,否则,在动画过程中,图像会出现跳动和不稳定感。

---- 四、使用Image实现动画效果

---- 该功能用定时器控件来控制移动和地球转动的速度,当然,其速度还与程序中设定的步长有关系,具体程序片段如下:

Private Sub Form_Load()
Timer_animate.inteval=100   INTEVAL属性为100ms
Timer_animate.enabled=true  启动动画定时器
End Sub
Private Sub Timer_animate_Timer()
Call ani_Image   定时调移动子程序
End Sub
Sub IncrFrame()
 FrameNum = FrameNum + 1  帧加1
 If FrameNum > 5 Then 
 最后一帧图像显示之后返回第一帧
 FrameNum = 1
    End If
 Imageearth(0).Picture = Imageearth(FrameNum).Picture
 将该帧图像赋给运动的Imageearth(0)控件的Picture属性
    End Sub
Sub ani_Image()   控制移动子程序
    Select Case Motion  控制移动方向的变量
    Case 1   向上和向左移动,步长50 twips
        Imageearth(0).Move Imageearth(0).
         Left - 50, Imageearth(0).Top - 50
          IncrFrame  切换到下一幅图
         If Imageearth(0).Left < = 0 Then   向左移动到了边界
            Motion = 2  向上和向右移动
         ElseIf Imageearth(0).Top < = 0 Then
            Motion = 4  向上移动到了边界,改向下和向左移动
        End If
    Case 2    向右和向上
        Imageearth(0).Move Imageearth(0).Left + 50,
         Imageearth(0).Top - 50
              IncrFrame
        到了右边界,转为向左和向上
        If Imageearth(0).Left >= (startform.Width
         - Imageearth(0).Width) Then
            Motion = 1
        ElseIf Imageearth(0).Top < = 0 Then
            Motion = 3   向右向下
        End If
    Case 3     向右向下
      Imageearth(0).Move Imageearth(0).Left + 50,
      Imageearth(0).Top + 50
          IncrFrame
       If Imageearth(0).Left >= (startform.Width
        - Imageearth(0).Width) Then
            Motion = 4   向左向下
       ElseIf Imageearth(0).Top >=
       (startform.Height - Imageearth(0).Height) - 680 Then
            Motion = 2   向右向上,其中680 twips是标题和菜单的高度
        End If
    Case 4   向左向下
      Imageearth(0).Move Imageearth(0).Left - 50,
      Imageearth(0).Top + 50
       IncrFrame
     If Imageearth(0).Left < = 0 Then  
     是否到了左边界,如到了转向右向下
            Motion = 3
         是否到了下边界
        ElseIf Imageearth(0).Top >= (startform.Height
       - Imageearth(0).Height) - 680 Then
            Motion = 1  向左向上
        End If
    End Select
End Sub

上一篇:利用VB测声卡    下一篇:在VB中播放AVI文件  
[发送给好友]  [关闭窗口]  [返回顶部]   转载请注明来源:www.it00.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 原点 投稿作者: 余鑫铭
信息来源: 网络 录入时间: 2005-8-4 11:34:17
关于我们 - 广告服务 - 版权申明 - 网站地图 - 联系方式 - 总编信箱 - 会员投稿