為了美化顯示屏幕,增加畫(huà)面的動(dòng)感,常常要用到各種圖像顯示特技,圖像的切換技術(shù)能明顯美化畫(huà)面。用VB編制這類程序時(shí),由于VB自身沒(méi)有這種切換功能,因此需要控件的參與或調(diào)用API函數(shù)BitBlt來(lái)實(shí)現(xiàn)這種功能。這里向你展示用BitBlt函數(shù)實(shí)現(xiàn)畫(huà)面的各種足以令人興奮的效果。
假設(shè)有5個(gè)圖像文件——Picture1至Picture5,我們的目標(biāo)是:讓這5幅畫(huà)自動(dòng)地循環(huán)顯示,每幅畫(huà)以某種切換方式出現(xiàn),當(dāng)有擊鼠標(biāo)動(dòng)作時(shí)退出程序。
創(chuàng)建項(xiàng)目文件
建立一個(gè)新工程文件Project1,加入一個(gè)新的Form名稱為Form1;添加一個(gè)模塊文件Modull;在Form1中加入一個(gè)圖畫(huà)框Picture1和一個(gè)定時(shí)器Timer1。
設(shè)置屬性如下:
Form1:AutoRedraw:True
ScaleMode:3
Picture1:AutoRedraw:True
ScaleMode:3
Visible:False
編寫代碼
聲明BitBlt函數(shù)——Modull.bas中的內(nèi)容:
Public Const SRCCOPY=&HCC0020′(DWORD)dest=source
Declare Function BitBlt Lib ″gdi32″Alias ″BitBlt″(By Val 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
這兩句只要從Win32api.txt文件中粘貼即可(使用API查看器)。
Form1中的代碼:
在Declare中定義全局變量:
Const bmpfilemax=5 ′總共5個(gè)bmp文件。
Dim bmpfile(bmpfilemax)As String ′bmp文件的文件名數(shù)組。
Dim drawbmpmode(bmpfilemax) As Integer ′各畫(huà)顯示時(shí)的切換方式。
Dim bmpnum,movestep,xmax,ymax As Integer
Dim kxy As Single ′x,y二個(gè)方向的比例。
程序運(yùn)行時(shí)先作初始化工作:
Private Sub Form-Load ()
bmpnum=0 ′當(dāng)前文件號(hào)=0,第一個(gè)文件。
bmpfile(0)=App.Path+′′\bmp1.bmp′′
bmpfile(1)=App.Path+′′\bmp2.bmp′′
bmpfile(2)=App.Path+′′\bmp3.bmp′′
bmpfile(3)=App.Path+′′\bmp4.bmp′′
bmpfile(4)=App.Path+′′\bmp5.bmp′′
drawbmpmode(0)=1 drawbmpmode(1)=5
drawbmpmode(2)=3 drawbmpmode(3)=4
drawbmpmode(4)=2 movestep=0
xmax=Form.ScaleWidth/2
ymax=Form.ScaleHeight/2
kxy =ymax/xmax
Picture1.Picture=LoadPicture(bmpfile(bmpnum))
Timer1.Interval=30 ′定時(shí)器啟動(dòng)。
End Sub
相關(guān)推薦:2010年全國(guó)計(jì)算機(jī)等級(jí)二級(jí)VB考試題型與解題技巧北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |