1.前言 公路交通多媒体演示系统简介: 此演示系统是一个单机版的开发软件,主要功能是实现对一个地区公路状况的查询。在这个系统中,配有沿途事物的录像以及各个标志性建筑的基本信息(例如一个路口的宽度、流量等)。此系统主要包括:多媒体演示部分,主要实现录像的播放、图片的浏览;数据库查询部分,包含了各种道路、桥梁等的信息以供用户查询。
2.多媒体计算机系统的组成 2.1.多媒体计算机的基本组成 2.1.1.多媒体计算机的硬件系统 构成多媒体硬件系统除了需要较高配置的计算机主机硬件之外,通常还需要音频、视频处理设备,光盘驱动器各种媒体输入/输出设备等。
下图为多媒体硬件系统基本组成:

2.1.2多媒体计算机软件系统 多媒体计算机软件系统按功能可分为系统软件和应用软件。
(1)多媒体系统软件 系统软件是多媒体系统的核心,它主要运行于多媒体操作系统平台(如Windows)上,故操作系统平台是软件的核心。
(2)多媒体应用软件 多媒体应用软件是在多媒体创作平台上设计开发的面向应用领域的软件系统。两者关系如图所示:

3.Visual Basic多媒体开发环境 3.1. Visual Basic与Windows 任何一种程序设计语言都离不开操作系统,用Visual Basic开发多媒体程序的实质是利用了Windows操作系统的多媒体能力。
3.2.MCI设备类型 MCI(Media Control Interface)是媒体控制接口的意思,MCI具有设备无关性和可扩展性,使用户不须使用低级的API就可以播放多媒体素材。
MCI可以控制简单设备和复合设备。简单设备是不需要指定数字文件的设备,如CD播放器等。复合设备是需要指定相应的数据文件的设备,如MIDI数字音频设备。MCI具有一个基本功能集包括设备的打开、播放、暂停、重放、关闭,这些功能往往可应用于所有设备。扩展功能集可以访问某一设备的特殊功能,如逐帧显示功能,只能用于动画上,而不能用于CD播放器和波形音频设备。MCI可以理解为一类标准接口,凡是复合接口的产品,均可以由MCI控件访问使用。
4.使用Visual Basic程序设计语言设计多媒体程序 4.1. Visual Basic设计多媒体程序的方法 在Visual Basic中,大致有以下几种方法设计多媒体程序:
1) 在实践过程中用编码改变属性。
2) 利用picture 控件循环显示画面。
3) 利用OLE控件(MSOLE.VBX)。
4) 媒体控制对象MCI.VBX和其他第三方控件。
5) 利用API函数。
4.2. Visual Basic设计多媒体程序要注意的几个问题 1) 多媒体素材的运用,包括注意选用的标准坚持少而精的原则;注意各种素材之间的同步问题。
2) 多媒体页面的连接。
3) 程序优化。
4) 注意媒体设备的使用。
5.具体的多媒体程序设计过程 5.1.录像、声音的播放 主要是利用Mediaplayer 控件编程,分为添加控件、添加代码、运行程序等几个步骤。 具体程序如下:
Private Sub Command2_Click()
Form1.MediaPlayer2.Open("D:\Sound\Track01.wav") ' 播放声音
End Sub
Private Sub Command1_Click()
Form1.MediaPlayer1.pen("D:\mm.avi") ' 播放录像
Form1.MediaPlayer2.Open("D:\Sound\Track01.wav") ' 播放声音
End Sub
Private Sub Command4_Click()
Flag=Not flag
If flag=True Then
Form1. MediaPlayer2.Stop
Else
Form1. MediaPlayer2.Play '实现声音的暂停,完成静音功能
End If
End Sub
在完成了录像、声音的播放之后,让我们通过鼠标点击事件来返回录像的当前位置(当前帧数),来实现与数据库的连接。与数据库连接的基本思想是:在同一工程中设置一个变量(设为aa)在多媒体演示部分返回的录像当前值赋给aa,再传递到数据库部分来实现查询功能,从而完成了与数据库的连接,由此可见这个变量非常重要,即录像停下的当前值非常重要。
下面介绍如何获取录像停下时刻的值:
利用MediaPlayer控件的属性之一currentposition来完成,通过窗体点击事件form-click(),我们可以通过如下的代码语句获得当前位置(帧数):
Private Sub Form_Click()
Text1.Text= MediaPlayer1.CurrentPosition '返回录像的当前位置(当前帧数)
aa= MediaPlayer1.CurrentPosition
End Sub
这样把aa传给了数据库,实现了多媒体与数据库的连接。
5.2.图片的浏览 因为图片的清晰度远远高于录像本身,所以对于用户来说,对于他感兴趣的部分(如路口、牌匾等标志性建筑),他们有理由获取更详细的信息,这时就会用到图片浏览器。同样这里也存在着一个与数据库连接的问题,在这里,与数据库连接的基本思想是在同一模块中定义一个变量(设为cc),通过赋给cc不同的值来选择浏览不同的图片,这个值是在查询时由用户输入的,它会有一个指定的范围。
图片浏览器制作如下: 添加一个picture box控件,命名为"picview"在其中放置一个图片框控件,命名为"picscroll",用于显示图片内容,在窗体最左侧和下侧各添加一个滚动条,用于大图浏览。 添加代码如下: Private Sub Command1_Click()
End
End Sub
Private Sub Form1_Load()
Dim cc As Integer
Select Case cc
Case 1 picscroll.Picture=LoadPicture("D:\1.jpg")
Case 2 picscroll.Picture=LoadPicture("D:\2.jpg")
……………………
case 20 picscroll.Picture=LoadPicture("D:\20.jpg")
End Select
If picscroll.Width<picview.ScaleWidth Then '将图形的宽和高于picview的宽和高进行比较
picscroll.Left=(picview. Width -ScaleWidth)\2 '如果都小于将picscroll放在picview中心
hscpic.Visble=False '不显示滚动条
Else '否则,如果宽度大于picview的宽
picscroll.Left=0 '则将picscroll的左边界定为在 picview最左端,
hscpic.Visble=True '并显示水平滚动条
hscpic.Value=0
hscpic.Max=picscroll.Width-picview.ScaleWidth
hscpic.SmallChange=picscroll.Width\20
hscpic.LargeChange= picscroll.Width\10
End If
If picscroll.Height<picview.Height Then '将图形的宽和高于picview的宽和高进行比较
picscroll.Top=(picview.Height -ScaleWidth)\2 '如果都小于将picscroll放在picview中心
vscpic.Visble=False '不显示滚动条
Else '否则,如果高度大于picview的高
picscroll.Top =0 '则将picscroll的上边界定为在
picview最上端,
vscpic.Visble=True '并显示垂直滚动条
vscpic.Value=0
hscpic.Max=picscroll.Height -picview.ScaleHeight
vscpic.SmallChange=picscroll.Height \20
vscpic.LargeChange= picscroll.Height \10
End If
End Sub
6.最终的公路交通多媒体演示系统

|