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.最終的公路交通多媒體演示系統