用VisualBasic進行多媒體設計
|
一個具有多媒體效果的軟件,能實現圖文聲并貌,能產生動畫效果,往往給人耳目一新的感覺,給人留下很深的印象,因此得到用戶的青睞。本文簡介用VB設計多媒體效果的一般方法,并介紹我們設計的一個實例。
一、用VB的圖形功能產生多媒體效果
1、用VB的圖形方法
VB是利用圖形對象的屬性、方法和事件在圖形對象(窗體Form、圖片框Picture Box等)上繪制圖形的。圖形對象的屬性有自動重畫AutoRedraw、線型DrawStyle、填充風格FillStyle、填充顏色FillColor等等;圖形對象的方法有畫點Pset、畫線Line、畫圓Circle等等。圖形對象的事件有單擊鼠標Click,雙擊鼠標Dblclick等等。再利用QBColor, RGB函數設置顏色,就可以繪制出五彩繽紛的圖形來。比如以下函數,就是利用圖形方法,在窗體上畫出一個有十字形光芒的星星。多次調用此函數并通過函數形參值的變化,可在窗體的不同地方,畫出大小不一,顏色各異的多個星星來。
| Function starl(dwidth1,dwidth2,x,y,clor1,clor2) '帶光芒的星星 drawwidth=dwidth1 '設定星星的大小 PSet(x,y),QBColor(Colorl) '畫星星并置顏色 drawwidth=dwidth2/4 '光芒寬度 Line(x,y)-(x-200,y),QBColor(clor1) '光芒長度及顏色 Line(x,y)-(x+200,y),QBColor(clor1) Line(x,y)-(x,y+200),QBCdor(clor1) Line(x,y)-(x,y-400),QBColor(clor1) drawwidth=dwidth2 '再畫覆蓋星星 PSet(x,y),QBColor(clor2) End Function |
循環調用此函數,就能產生星光閃爍的效果。
2、用圖形控制工具
圖形工具又可分三種:圖像(Image)控制工具、線條(Line)控制工具和形狀(Shape)控制工具。只要在工具箱中點中某控制,拖到窗體上,就產生了相應的形狀和事件,在事件代碼窗中編入程序就能實現許多圖形功能。
圖像工具是一個矩形的區域,在此區域中可以用上述的圖形方法繪制出各種圖形、可以置入.BMP、DIB、ICO及WMF等格式的文件,還可以在該區域中輸入照片和其他的圖像數據;線條控制工具主要用于繪制直線;而形狀工具可以直接在表格上繪制出各種幾何圖形。
例如,在屬性窗口Properties中,按下面的設置可在背景為青色的窗體上畫出一個黃色的月牙。
| 窗體(forml):backcolor '選為青色 形狀1(shapel):fillstyle =0 '實心填充 fillcolor '選為黃色 shape=3 '圓形 形狀2(shape2):fillstyle=0 '實心填充 fincolor '選為青色 shape=3 '圓形 |
拖動形狀1和形狀2到窗體合適的位置,并使形狀2覆蓋住形狀1而使形狀1成為月牙形即可。
3、動畫效果
對圖形方法產生的圖形,采用覆蓋和異或等方法,就能實現圖形的移動而產生動畫效果。
下面一段程序實現了一個人造地球衛星的圖片作橢圓軌道運行的動畫效果。
| Sub picture_click( ) Const PI=3.1415926 '圓周率 Const arf=PI/8 '軌道傾斜角度 * 衛星轉動 * For i=0 TO 2 * PI Step.0015 xx=ra * Cos(i) '橢圓 yy=rb * Sin(i) '橢圓 xp=xx * Cos(arf)- yy * Sin(arf) '坐標變換 yp=xx * Sin(arf)+ yy * Cos(arf)+ym '坐標變換 picturel.Picture=luadPicture("c:vbmetilsatelid.wmf') '裝入衛星圖片 picturel.Left=xp '移動圖片,產生動畫 picturel.Left=yp '移動圖片,產生動畫 DoEvents '可使衛星轉動的同時,響應其他事件 Next i End Sub |
二、用VB的聲音功能產生多媒體效果
1、利用API函數
VB沒有提供像PLAY這樣的聲音函數,它只有一個簡單的BEEP,使機器產生一下蜂鳴聲。要想產生音樂,可以調用Windows的動態鏈接庫DLL中的函數或是調用VB動態鏈接庫文件VBX。一般是先要在窗體層的通用說明部分或模塊層對調用的Windows函數進行說明。音樂函數主要是調用"SOUND.DRV"庫中的幾個API函數,說明之后就可以直接使用了。調用以下幾個函數可使計算機演奏出悅耳的歌曲。
Opensound()打開發聲設備
StarlSound()開始產生音樂
CloseSound()關閉發聲設備
SetVoiceSound(聲音隊列、頻率、持續時間)
SetVoiceQueueSize(聲音隊列,內存空間字節數)
以下程序產生"東方紅"樂曲,單擊窗體即可。
| Sub form1_click( ) * 樂曲"東方紅" * Dim ff ReDim fq(1 To 47) ReDim delay(1 To 47) x=OpenSound() y=SetVioceQueueSine(1,1024) * 打開頻率文件 * Open "dth_fieq.txt" For Input As #1 For i=1 To 47 Input #l,ff Select Case ff Case O:fq(i)=20000 Case l:fq(i)=523 Case 2:fq(i)=587 Case 3:fq(i)=659 Case 4:fq(i)=698 Case 5:fq(i)=784 Case 6:fq(i)=880 Case 7:fq(i)二988 Case 18:fq(i)二1047 Case 85:fq(i)=392 Case 86:fq(i)=440 Case 87:fq(i)=494 Case Else:fq(i) = 20000 End Select Next i Close #1 * 打開音符時間的文件 * Open "dth_time.txt"For Input As #1 Far i=1 To 47 Input #1,delay(i) Next i Close #1 For i=1 To 47 SOUND fq(i),delay(i)*2 Next I Closesound() End Sub Sub SOUND(frequency&,ByVal duration%) frequency&=frequency& * 65335 x=SetVoiceSound(1,frequency&,duration%) y=StartSound() End Sub |
2、利用OLE控制產生
VB中的OLE(對象鏈接與嵌入)控制也可以用來播放聲音文件,比如*.wav,*.mid等等。我們可以將自己編寫的歌曲存為*.wav,或*.mid文件,再利用OLE來放出。利用OLE來發出聲音有兩種不同的方式:一是在設計階段就把裝了聲音文件的OLE對象建立好,以后只要在他上面雙擊,就能夠發出聲音;二是完全由程序來控制。
在設計階段建立OLE對象的方法是:首先在窗體上設置OLE對象,這時會出現Insert Object對話框,然后選好Sound對象,接著設置Create from File復選鈕,再在File:輸入框里輸入聲音文件,或利用對話框中的Browse按鈕去尋找,最后設置link單選框即可,以后只要在OLE上雙擊就可以聽到聲音了。
由程序控制聲音的播放,可在窗體上設置一個空的OLE對象,然后再寫一段下面的程序就可以了:
| Sub Form_click() Olel_class="soundRec" Olel.SourceDoc="聲音文件名及其路徑" Olel.Verb=0 Olel.Action=7 |
程序運行后,只要單擊窗體就可以聽到聲音了。