Di VISUALBAISC5.0, Anda dapat menggunakan metode memutar file animasi video (*.AVI) untuk menambahkan efek animasi ke perangkat lunak kami, tetapi bagaimana cara mencapai efek gambar-dalam-gambar video di perangkat lunak? Setelah penjelajahan penulis, saya menemukan bahwa efek ini dapat dicapai dengan menggunakan fungsi API mciExecute, mciSendString dan SetWindowPos dari WIDOWS95.
Di bawah ini, penulis mengambil metode yang paling umum digunakan yaitu melapiskan gambar kecil ke gambar besar sebagai contoh untuk mengilustrasikan metode penerapan video picture-in-picture.
1. Buat formulir. Masuk ke lingkungan sistem VISUALBAISC5.0 dan buat formulir baru FORM1.
2. Buat jendela video. Disini penulis menggunakan dua kotak gambar (PictureBox), satu besar dan satu lagi kecil, sebagai jendela video. Pilih kontrol PictureBox di Control Toolbox dan tarik keluar dua kotak (Gambar1 dan Gambar2) di formulir. Diantaranya, Picture1 adalah layar besar dan memutar file AVI01.AVI; Picture2 adalah layar kecil dan memutar file AVI02.AVI.
3. Tulis skrip untuk kontrol yang sesuai.
Modul umum:
DeklarasikanFunctionmciExecuteLib"winmm.dll"(ByVallpstrCommandAsString)AsLong
DeklarasikanFunctionmciSendStringLib"winmm.dll"Alias"mciSendStringA"(ByVallpstrCommandAsString,ByVallpstrReturnStringAsString,ByValuReturnLengthAsLong,ByValhwndCallbackAsLong)AsLong
DeklarasikanFunctionSetWindowPosLib"user32"(ByValhwndAsLong,ByValhWndInsertAfterAsLong,ByValxAsLong,ByValyAsLong,ByValcxAsLong,ByValcyAsLong,ByValwFlagsAsLong)AsLong
Proses AKTIFKAN FORM1:
DimAAAsPanjang
DimPlayAviAsLong
DimtmpValAsString
DimKeyValSizeAsLong
OnErrorResumeBerikutnya
tmpVal=String$(1024,0)
UkuranVal Kunci=1024
PlayAvi=mciSendString("STATUSAVI01READY" Str(Gambar2.hwnd),tmpVal,KeyValSize,0)
JikaPlayAvi<>263Lalu
MainkanAvi=mciExecute("closeAVI01")
AkhirJika
tmpVal=String$(1024,0)
UkuranVal Kunci=1024
PlayAvi=mciSendString("OPENAVI01.AVIALIASAVI01TYPEAVIVIDEOSTYLECHILDPAENT" Str(Gambar2.hwnd) "Tunggu",tmpVal,KeyValSize,0)
x1Pos=Gambar1.Lebar
y1Pos=Gambar1.Tinggi
tmpVal=String$(1024,0)
UkuranVal Kunci=1024
AA=mciSendString("STATUSAVI01WINDOWHANDLEWAIT",tmpVal,KeyValSize,0)
Jika(Asc(Mid(tmpVal,KeyValSize,1))=0)Kemudian
tmpVal=Kiri(tmpVal,KeyValSize-1)
Kalau tidak
tmpVal=Kiri(tmpVal,Ukuran KeyVal)
AkhirJika
AA=SetWindowPos(tmpVal,0,0,0,x1Pos,y1Pos,0)
AA=mciExecute("WINDOWAVI01STATESHOW")
tmpVal=String$(1024,0)
UkuranVal Kunci=1024
PlayAvi=mciSendString("STATUSAVI02READY" Str(Gambar1.hwnd),tmpVal,KeyValSize,0)
JikaPlayAvi<>263Lalu
MainkanAvi=mciExecute("CLOSEAVI02")
AkhirJika
tmpVal=String$(1024,0)
UkuranVal Kunci=1024
PlayAvi=mciSendString("OPENAVI02.AVIALIASAVI02TYPEAVIVIDEOSTYLECHILDPAENT" Str(Gambar1.hwnd) "Tunggu",tmpVal,KeyValSize,0)
x1Pos=Gambar2.Lebar
y1Pos=Gambar2.Tinggi
tmpVal=String$(1024,0)
UkuranVal Kunci=1024
AA=mciSendString("STATUSAVI02WINDOWHANDLEWAIT",tmpVal,KeyValSize,0)
Jika(Asc(Mid(tmpVal,KeyValSize,1))=0)Kemudian
tmpVal=Kiri(tmpVal,KeyValSize-1)
Kalau tidak
tmpVal=Kiri(tmpVal,Ukuran KeyVal)
AkhirJika
AA=SetWindowPos(tmpVal,0,0,0,x1Pos,y1Pos,0)
MciExecute"WINDOWAVI02STATESHOW"
MciJalankan"PLAYAVI01REPEAT"
MciJalankan"PLAYAVI02REPEAT"
OnErrorGoTo0
Proses QueryUnload FORM1:
mciJalankan "STOPAVI01"
mciJalankan "STOPAVI02"
mciJalankan"CLOSEAVI01"
mciJalankan"CLOSEAVI02"
Saat Anda menjalankan program ini, Anda dapat melihat dua animasi diputar secara bersamaan, sehingga menghasilkan efek gambar-dalam-gambar pada video. Program di atas berhasil berjalan di VISUALBAISC5.0 dan WINDOWS95. ->