|
在用Visual Basic編程的時候,通常要調用圖片,如果圖片出現(xiàn)的時候是以各種完美的效果出現(xiàn)的,(如馬賽克效果,百葉窗效果等)則你的程序就會顯得更加靈活,你的程序就會更加專業(yè)化。本文講述了Visual Basic中如何調用API函數(shù),以及用API函數(shù)中的BitBlt函數(shù)實現(xiàn)各種完美的圖片出現(xiàn)效果的過程。
§1 一般的圖片出現(xiàn)效果
一般情況下,要使Visual Basic中的圖片出現(xiàn),例如,要顯示Picture1中的圖片,只需一句代碼:
Picture1.Visible=True
使用以上方法時,圖片是突然出現(xiàn)的。也可以編復雜一點的代碼,使圖片從左到右、從上到下或從中間向四周擴大。例如,使Picture1中的圖片從左到右出現(xiàn),其代碼為:
Picture1.Width = 0
Picture1.Visible = True
For i = 0 To 5000 Step 50 注釋:5000代表圖片的高度
Picture1.Width = i
Next i
使Picture1中的圖片從上到下出現(xiàn)的代碼為:
Picture1.Height = 0
Picture1.Visible = True
For i = 0 To 4000 Step 40 注釋:4000代表圖片的寬度
Picture1.Height = i
Next i
使Picture1中的圖片從中間向四周擴大的代碼為:
Picture1.Width = 0
Picture1.Height = 0
Picture1.Visible = True
For i = 0 To 100
Picture1.Width = Picture1.Width + 50
Picture1.Height = Picture1.Height + 40
Picture1.Left = Picture1.Left - 100
Picture1.Top = Picture1.Top - 80
Next i
當然,你可以靈活地應用以上辦法實現(xiàn)其他更加好看的圖片出現(xiàn)效果。然而,同Authorware等其他軟件編制的程序相比,你的圖片出現(xiàn)效果仍然會黯然失色,因為Authorware編程時,可以很容易地實現(xiàn)從上到下、從左到右、百葉窗、開門、關門等完美的圖片出現(xiàn)效果,要在Visual Basic中做到這些效果并非易事。
但“天無絕人之路”,強大的Windows API函數(shù)中的BitBlt函數(shù)將幫助您實現(xiàn)這一愿望。
§2 BitBlt函數(shù)
一、 BitBlt函數(shù)的功能
BitBlt API函數(shù)的功能是將屏幕上任何一塊拷貝到屏幕上其它任何一個地方。
二、 聲明BitBlt函數(shù)
1. 運行Visual Basic4.0程序組中的API Text Viewer程序項。
2. 在API Text Viewer中,單擊File菜單下的Load Text File...命令。
3. 在出現(xiàn)的Select a Text API File對話框中,選擇Win32api.txt文件。
4. 為了使以后拷貝Windows API函數(shù)更快,你可以將Win32api.txt文件轉換成為一個數(shù)據(jù)庫。如圖,單擊“是(Y)”。
5. 在API Type下拉框中選擇Declare。
6. 在Available Items中選擇BitBlt,如圖,單擊Add按紐,于是BitBlt便出現(xiàn)在Selected Items框中,單擊Copy按紐。BitBlt函數(shù)變拷貝到剪貼板上。
7. 關閉API Text Viewer,打開Visual Basic程序,使用Insert菜單下的Module命令新建一個Module1,使用Edit菜單下的Paste命令,將剪貼板上的BitBlt函數(shù)拷貝到Module1中。這樣,在您的程序中,就可以使用BitBlt函數(shù)了。
三、BitBlt函數(shù)中各參數(shù)簡介
Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
以上是BitBlt函數(shù)的聲明格式,其中,各參數(shù)定義如下:
參數(shù)
描述
hDestDC
接收位圖的設備描述表
X
目標矩形左上角的邏輯X坐標
Y
目標矩形左上角的邏輯Y坐標
nWidth
目標矩形的寬度
nHeight
目標矩形的高度
hSrcDC
源設備描述表
xSrc
源位圖左上角的邏輯X坐標
ySrc
源位圖左上角的邏輯Y坐標
dwRop
拷貝模式
dwRop的各種可能值為:
&HCC0020
dest=source
&HEE0086
dest=source OR dest
&H8800C6
dest=source AND dest
&H660046
dest=source XOR dest
&H440328
dest=source AND (NOT dest)
&H330008
dest=not source
&H1100A6
dest=(NOT source)AND(NOT dest)
&HC000CA
dest=source AND pattern
&HBB0226
dest=(NOT source) OR dest
&HF00021
dest=pattern
&HFB0A09
dest=Dpsnoo
&H5A0049
dest=pattern XOR dest
&H550009
dest=NOT dest
&H42&
dest=BLACK
&HFF0062
dest=WHITE
在本程序中使用的BitBlt函數(shù)均定義dwRop=HCC0020,如果你定義dwRop為其他值,會收到其他異想不到的效果。
§3 用BitBlt函數(shù)實現(xiàn)各種各樣的圖片出現(xiàn)效果
實現(xiàn)髦滯計?魷中Ч?幕?駒?硎牽荷柚昧礁鐾計?騊icture1和Picture2,在Picture1中裝入要顯示的圖片,(可以在窗體設計時就裝好,也可以在程序運行過程中裝入。)將Picture1中的圖片以各種方法拷貝到Picture2中,從而實現(xiàn)各種各樣的圖片出現(xiàn)效果。
先在Picture1中裝入待顯示的圖片,并設置Picture1的屬性為AutoRedraw=True,Visible=False, 設置Picture2的屬性為AutoRedraw=False,Visible=True,設置Form的屬性為ScaleMode=3。
一、從上到下效 |
|