VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - Vb 5.0制作多媒体动画漫谈
发表评论(0)作者:不详, 平台:VB6.0+Win98, 阅读:14331, 日期:2001-08-13
Vb 5.0制作多媒体动画漫谈



  Visual Basic具有易学易用、编程简洁、程序集成化高等特点。Microsoft Vb5.0推出以来,好评如潮,其又增加了客户机/服务器编程和Internet编程的新特性。其实Vb5.0在动画制作方面更有独到的一面,可以给您的程序增加激动人心的效果。当您欣赏到从声卡播放出您在程序中加上的美妙声音,还有那栩栩如生的动画,此等美事!不亦快哉!

  Windows支持多种类型的多媒体设备,但您的计算机不见得有所有的设备驱动器。如下是一个由Windows支持的多媒体设备类型的完整列表:

设备类型 描述
animatio 动画设备
cdaudio 音频CD播放机
dat 数字音频磁带播放机
avivideo(*.avi) 数字视频
overlay 叠加设备(相当于窗口视频)
scanner 图象扫描仪
sequencer (*.mid) MIDI音序器
vcr VIDEO磁带录音机
videodisc VIDEO磁盘播放机
waveaudio(*.wav) 数字波形的音频设备
other 未定义的MCI设备类型
  使用设备的名字可以唯一地指定一个MCI驱动器。所有的设备名字都在windows\system目录下的system.ini文件的[MCI]部分里被指定了。如下为笔者的system.ini文件中[MCI]内容。

  [mci]

  cdaudio=mcicda.drv

  sequencer=mciseq.drv

  waveaudio=mciwave.drv

  avivideo=mciavi.drv

  videodisc=mcipionr.drv

  vcr=mcivisca.drv

  MMMovie=mciqtw.drv

  ActiveMovie=mciqtz.drv

  magic=MCIMPEG.DRV

  MpegVideo=D:\XMPLAYER\xmdrv95.dll

  ReelMagic=D:\XMPLAYER\xmdrv95.dll

  您可以在您的计算机中加上相应的驱动器,但是要保证在windows\system目录中有相应的.drv驱动程序。

  如果您用的是WINDOWS 95,运行REGEDIT,按照如下路径:HKEY_LOCAL_MACHINE →SYSTEM →CURRENTCONTROLSET →CONTROL →MEDIARESOURCES →MCI,就会找到您计算机中所有的MCI驱动器的项。

  笔者前段时间用Vb5.0开发了一个多媒体动画教学软件,现就Vb5.0开发多媒体动画谈谈几点,与同行交流。意在抛砖引玉。(注:为了试用本程序,在硬盘中最好有具有声音的.AVI、.MOV、.MMM等文件及可组成连续动画的图片,Windows\media和vb5\graphics\avis中还有很多.wav、.rmi、.mid、.avi等文件)。

  1、使用OLE控件,结合Microsoft PowerPoint 软件共同开发

  PowerPoint可以进行剪贴画、图片、音乐、声音、影片的剪辑和动画的制作。特别地,可以播放有声音的AVI(Audio Video Interleave)文件,相对于VB5中的Animation 控件,该控件只能播放无声的AVI 文件。

  您可以动态显示文本、形状、声音、图像和其他对象,这样就可以突出重点、控制信息的流程,并提高演示文稿的趣?缎裕豢梢匀妹扛鱿钅糠?诺ザ莱鱿郑?蛘呷枚韵笾鸶龀鱿郑豢梢陨柚妹扛鱿钅糠?呕蛘叨韵蟪鱿值姆绞剑ɡ?绱幼蟛喾扇耄??ㄉ⒖?龋??约疤砑有碌淖榧?保?欠褚?闷渌?钅糠?呕蛘叨韵蟊浒祷蛘吒谋溲丈?灰部梢愿?亩??乃承蚝褪奔洌?⑶医??巧柚梦?远?鱿侄?恍枰?炊?蟊辏换箍梢栽诙??屑由仙?簦?刮奚?舻腁VI文件在播放时同样也具有美妙的声音。

  方法如下:

  在新建窗体上建立一个OLE控件,在弹出的“插入对象”对话框中选取“由文件创建”单击“浏览”选取用PowerPoint作的文件(*.ppt),单击“确定”。

  改变OLE控件的Autoactivate属性,设置为Automatic,使程序回车后自动运行(播放键、停止键等可于PowerPoint中加入)。

  按F5运行程序后回车即可欣赏到您在PowerPoint中制作的动画。

  2、使用PaintPicture方法和Timer控件

  PaintPicture方法用以在 Form, PictureBox 或Printer上绘制图形文件(.bmp, .wmf, .emf, .ico或 .dib)的内容,不支持命名参数。

  在一个新窗体中,加入一个Timer控件。

  用LoadPicture方法加入连续的图片,如vb5\graphics\icons\misc目录下的face01.ico~face05.ico或vb5\graphics\icons\elements目录下的moon01.ico~moon08.ico

  声明中加入如下代码:

  Dim p(4) As Picture



  Private Sub Form_Load()

  Set p(0) = LoadPicture("c:\work\vb5\aa30.bmp")

  Set p(1) = LoadPicture("c:\work\vb5\aa31.bmp")

  Set p(2) = LoadPicture("c:\work\vb5\aa32.bmp")

  Set p(3) = LoadPicture("c:\work\vb5\aa33.bmp")

  Set p(4) = LoadPicture("c:\work\vb5\aa34.bmp")

  ......

  ‘还可加入更多连续的图片

  End Sub



  Private Sub Timer1_Timer()

  For i = 0 To 4

  PaintPicture p(i), 0, 0

  For j = 0 To 500000

  j = j + 1

  Next j

  ‘此程序起到一个延时的作用,目的利用人眼睛

  ‘视觉上的擦拭(Wipe)延缓,认为是连贯的动画。

  Next i

  End Sub

  其中Timer控件Interval中设置播放动画速度(毫秒为单位,最大值为32767毫秒)。

  按F5运行程序即可

  3、用动画控件Anipushbutton来开发

  如果动画控件Anipushbutton(Anibtn32.ocx)不在工具栏上,按如下方法添加:

  从工程”选择“部件”,再复选控件Desaware Animated Button Control , Anipushbutton控件即出现在“工具箱”中。

  在新建窗体上建立一个Anipushbutton控件,并在控件上单击鼠标右键,选取“属性”如下图123

     图123

  其中:

   “General”中“Cycle”设置图片的循环方式(自动或按帧或两者任意),Textposition设置控制图片的命令按钮与图片之间的相对位置。

   “General 2”中Caption设置控制图片命令按钮中标题栏的文本,“Speed”设置动画的速度(毫秒为单位,最大值为32767毫秒)

   “Frame Setting”中设置装入的图片(*.bmp或*.ico),所装入?耐计?笮∽詈靡恢隆?

   在“属性”窗体中还可以设置“字体”“颜色”和“图片”。

   通过以上的设置,按F5运行,单击Anipushbutton1,无须编程即可设计出具有连贯性的动画。

  4、用Animation 控件创建动画按钮。

  该控件只能播放无声的 AVI 文件。此外,动画控件只能显示未压缩的或已用行程编码 (RLE) 压缩的 .avi 文件。如果尝试加载含有声音数据或格式不为控件所支持的 .avi 文件,则返回错误(错误 35752)。

  如果控件Animation(comct232.ocx)不在工具栏上,按如下方法添加:

  从工程”选择“部件”,再复选控件Microsoft windows common Controls-2 5.0 ,Animation控件即出现在“工具箱”中。

  如下为一简单例子,说明Animation 控件的用法。在新建窗体上建立一个Animation 控件和 CommonDialog 控件。

  声明中加入如下代码:

  Private Sub Form_Load()

  With CommonDialog1

    .Filter = "avi (*.avi)|*.avi"

    .ShowOpen

  End With

  With Animation1

    .AutoPlay = True

    .Open CommonDialog1.filename

  End With

  End Sub

  按F5运行程序,并选择要打开的 .avi 文件,即可欣赏到无声音的AVI动画。

  5、采用Multimedia MCI 控件

  该控件管理媒体控制接口 (Media Control Interface 简记为MCI) 设备上的多媒体文件的记录与回放。MCI是Windows操作系统的另一种专门化语言,是由象英语一样的命令和语法组成,它使您可以对您的PC机的各种多媒体部件进行编程。从VB程序员的观点来看,MCI是一种介于您的VB应用程序和多媒体设备驱动器之间的语言;从概念上说,这种控件就是一组按钮,它被用来向诸如声卡、MIDI(Musical Intrument Data Interface) 序列发生器、CD-ROM 驱动器、视频 CD 播放器和视频磁带记录器及播放器等设备发出 MCI 命令。MCI 控件还支持 Windows 视频文件(Audio Video Interleave 简记为AVI)和多媒体电影文件(MultiMedia Movie 简记为MMM)的回放。

  AVI 动画类似于电影,由若干帧位图组成。虽然 AVI 动画可以有声音,但这样的动画不能在 Animation 控件中使用,如果试图装载这样的文件将会产生错误,要播放有声的 .avi 文件,要使用 Multimedia (MCI) 控件或用Windows API 函数等(下述)。

  如果MCI控件(mci.ocx)不在工具栏上,按如下方法添加:

  从工程”选择“部件”,再复选控件Microsoft Multimedia Control 5.0 ,MCI控件即出现在“工具箱”中。

  在设计时,将 Multimedia MCI 控件加到一个窗体上,它在窗体中的外观如下图所示:

  图4

  按钮被分别定义为 Prev、 Next、 Play、 Pause、 Back、 Step、 Stop、 Record 和 Eject。

  在一新建工程的窗体中加上一个命名为MciTest的Multimedia MCI控件

  声明中加入如下代码:

  Private Sub Form_Click()

  With mcitest

  .filename = "c:\tools\arj.avi"

  ‘arj.avi 是一个有声音的AVI文件

  .Command = "open"

  .Command = "play"

  End With

  End Sub

  Private Sub Form_Load()

  mcitest.Left = -32000

  注释:目的在于使MCI控件不可见,也可另设其

  注释:mcitest.Visibleúlse

  End Sub

  Private Sub mcitest_Done(NotifyCode As Integer)

  mcitest.Command = "close"

  End Sub

  按F5运行程序,单击窗体即可。

  6、用媒体播放动画控件Mplay来实现。

  该控件支持有声音的avi文件,还支持.mpeg、.mpe、.mpg、.mid、.wav、.rmi、ActiveMovie等文件,实际上是VB调用Media Play媒体播放机应用程序(也称VIDEO FOR WINDOWS,文件名为 Mplayer.exe)。

  如果动画控件Mplay不在工具栏上,按如下方法添加:

  从“工程”选择“部件”,再单击“可插入对象”,从中复选“媒体剪辑”, Mplay控件即出现在“工具箱”中。

  在新建窗体上建立一个Mplay控件,即出现如下图:

  图5

  再依次“文件”-“打开”,选择所要的AVI文件-“更新Client Document” -“退出并返回Client Document”。

  按F5运行,双击图象,即播放具有连贯性的带声音的动画(当然此AVI文件要有声音才行哦!)。

  7、用视频播放动画控件VideoPlay来开发

  该控件支持有声音的.avi文件,还支持.mov、.mpg、.mpa、.mpv文件。

  如果动画控件VideoPlay (Video32.ocx)不在工具栏上,按如下方法添加:

  从“工程”选择“部件”,再复选控件Media Architects Videoplay Control ,VideoPlay控件即出现在“工具箱”中。

  在新建窗体上建立一个VideoPlay控件,并在控件上单击鼠标右键,选取“属性”如下图.

  图6

  图7

  声明中加入如下代码:

  Private Sub Form_Load()

  VideoPlay1.filename = "c:\tools\arj.avi"

  VideoPlay1.AliasName = "vid"

  VideoPlay1.Open

  VideoPlay1.Play

  End Sub

  注:如果没有别名VideoPlay1.AliasName = "vid"的说明,则会出现如下图错误:

  图8

  原因是和MMSYSTEM265程序冲突。

  此程序运行后会一直到程序结束,读者可自行编程对文件的播放加以控制。

  8、用可视动画控件ActiveMovie来开发

  该控件支持音频文件(.wav)、影片文件(.avi、.mov、.mpg、.mpa、.mpv)和VCD文件(.dat)。

  实际上,这是VB调用ActiveMovie控制器来工作的。

  如果动画控件ActiveMovie (AMovie.ocx)不在工具栏上,按如下方法添加:

  从“工程”选择“部件”,再复选控件Microsoft ActiveMovie Control ,ActiveMovie控件即出现在“工具箱”中。

  在新建窗体上建立一个ActiveMovie控件,即出现如下图:

  图9

  声明中加入如下代码:

  Private Sub Form_Load()

  ActiveMovie1.filename = "c:\tools\arj.avi"

  ActiveMovie1.Run

  End Sub

  读者还可以自行要“属性”里对影片播放进行设置,诸如“播放次数”,“音量”,“影片大小”,“面板”等。

  该控件相对于VideoPlay控件而言可通过对其属性直接设备,无须太多的编程,十分简单直观。

  更难能可贵的是其支持VCD格式(即.dat)文件的播放,并且在播放时,鼠标右键在图象单击,可以直接对图象控制:播放、暂停、停止等,并且可以在播放时直接设置屏幕大小:(1/16,1/4,1/2,1,2倍和全屏)。



  9、用动画控件MCIWnd来开发

  如果动画控件 (Mciwndx.ocx)不在工具栏上,按如下方法添加:

  从工程”选择“部件”,再复选控件MCIWndX Control ,MCIWnd控件即出现在“工具箱”中。

  在新建窗体上建立一个MCIWnd控件,并在控件上单击鼠标右键,选取“属性”如下图

  图10

  图11

  您可以在Design-time栏中单击Browse选取所要播放的文件,单击“确定”。

  按F5运行程序,然后单击“播放”键,鼠标右键在图象单击,如下图:

  图12

  可以直接对图象控制:播放、暂停等,并且可以在播放时直接设置屏幕大小:( 1/2,1,2倍)和音量,并对文件进行另外打开、保存、关闭、复制、配置等。

  令人鼓舞的是该控件几乎支持所有上述的多媒体文件。更有意思的是:

  (1)可以直接控制播放的速度;

  (2)可以在“命令”行中直接输入丰富的MCI指令。(如基本的play;close;stop;open;info;capability;pause;put;record;save;resume;seek;set...等等,不一而足)。

  10、用Windows API 函数开发

  Windows 中mciExecute 函数支持wav、rmi、mid、avi(可以有声音)等文件

  声明中加入如下代码:

  Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long

  Private Sub Form_Click()

  Dim x

  x = mciExecute("Play c:\windows\media\office97\money.avi")

  End Sub

  按F5运行程序即可。

  Windows 中mciSendString函数同样可以播放上述类型的文件。

  声明中加入如下代码:

  Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long



  Private Sub Form_Click()

  x& = mciSendString("open c:\tools\arj.avi type avivideo alias canyon", 0&, 0, 0)

  x& = mciSendString("play canyon", 0&, 0, 0)

  x& = mciSendString("close animation ", 0&, 0, 0)

  End Sub

  如下为一小程序,运行时自动播放您的CD音乐,然后把控制权还给VB应用程序,不影响计算机同时做其他事(当然您的CD-ROM中要有CD才行哦!)

  声明中加入如下代码:

  Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long



  Private Sub Form_Load()

  s$ = "play cdaudio "

  x& = mciSendString(s$, 0&, 0, 0)

  End Sub

  多媒体是明天计算机的核心,极好的声音效果和音乐、完全的运动视频和动画给我们所需的信息带来生机和活力,很难相信没有图象、声音和动画的程序是完美的。通过上面的讨论,我们会折服于Visual Basic控制各种多媒体设备是多么的轻而易举,简直就有点信手拈来的味道。

  上述程序在中文Windows 98 OSR2和 VB6.0中文专业版下调试通过。