在用Visual Basic编程的时候,通常要调用图片,如果图片出现的时候是以各种完美的效果出现的,(如马赛克效果,百叶窗效果等)则你的程序就会显得更加灵活,你的程序就会更加专业化。本文讲述了Visual Basic中如何调用API函数,以及用API函数中的BitBlt函数实现各种完美的图片出现效果的过程。
§1 一般的图片出现效果
一般情况下,要使Visual Basic中的图片出现,例如,要显示Picture1中的图片,只需一句代码:
Picture1.Visible=True
使用以上方法时,图片是突然出现的。也可以编复杂一点的代码,使图片从左到右、从上到下或从中间向四周扩大。例如,使Picture1中的图片从左到右出现,其代码为:
Picture1.Width = 0
Picture1.Visible = True
For i = 0 To 5000 Step 50 注释:5000代表图片的高度
Picture1.Width = i
Next i
使Picture1中的图片从上到下出现的代码为:
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
当然,你可以灵活地应用以上办法实现其他更加好看的图片出现效果。然而,同Authorware等其他软件编制的程序相比,你的图片出现效果仍然会黯然失色,因为Authorware编程时,可以很容易地实现从上到下、从左到右、百叶窗、开门、关门等完美的图片出现效果,要在Visual Basic中做到这些效果并非易事。
但“天无绝人之路”,强大的Windows API函数中的BitBlt函数将帮助您实现这一愿望。
§2 BitBlt函数
一、 BitBlt函数的功能
BitBlt API函数的功能是将屏幕上任何一块拷贝到屏幕上其它任何一个地方。
二、 声明BitBlt函数
1. 运行Visual Basic4.0程序组中的API Text Viewer程序项。 2. 在API Text Viewer中,单击File菜单下的Load Text File...命令。
3. 在出现的Select a Text API File对话框中,选择Win32api.txt文件。
4. 为了使以后拷贝Windows API函数更快,你可以将Win32api.txt文件转换成为一个数据库。如图,单击“是(Y)”。
5. 在API Type下拉框中选择Declare。
6. 在Available Items中选择BitBlt,如图,单击Add按纽,于是BitBlt便出现在Selected Items框中,单击Copy按纽。BitBlt函数变拷贝到剪贴板上。
7. 关闭API Text Viewer,打开Visual Basic程序,使用Insert菜单下的Module命令新建一个Module1,使用Edit菜单下的Paste命令,将剪贴板上的BitBlt函数拷贝到Module1中。这样,在您的程序中,就可以使用BitBlt函数了。
三、BitBlt函数中各参数简介
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函数的声明格式,其中,各参数定义如下:
参数
描述
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函数均定义dwRop=HCC0020,如果你定义dwRop为其他值,会收到其他异想不到的效果。
§3 用BitBlt函数实现各种各样的图片出现效果
实现髦滞计鱿中Ч幕驹硎牵荷柚昧礁鐾计騊icture1和Picture2,在Picture1中装入要显示的图片,(可以在窗体设计时就装好,也可以在程序运行过程中装入。)将Picture1中的图片以各种方法拷贝到Picture2中,从而实现各种各样的图片出现效果。
先在Picture1中装入待显示的图片,并设置Picture1的属性为AutoRedraw=True,Visible=False, 设置Picture2的属性为AutoRedraw=False,Visible=True,设置Form的属性为ScaleMode=3。
一、从上到下效果
将Picture1从形式上分为很多小块
如图所示,要将Picture1中的图片拷贝到Picture2中,首先将Picture1从形式上划分为很多小块a1、a2、a3、…,每块宽度为。
然后利用BitBlt函数先将Picture1中的a1块拷贝到Picture2中的相同位置,等待片刻,再拷贝a2块、a3块、…直到。如果将取得足够小,则人眼看到 Picture2中的图片就是以从上到下的效果出现的。其程序如下:
Picture2.Cls
nHeight = 3‘小块的高度,即
Stripes = Picture1.Height / nHeight‘总共的小块数目n个
P2 = nHeight
P1 = Picture1.Width
For I = 0 To Picture1.Height Step nHeight
p3 = I
r% = BitBlt(Form1.Picture2.hDC, 0, p3, P1, P2, Form1.Picture1.hDC, 0, p3, &HCC0020)
For j = 1 To 8000 注释:‘等待片刻,图片从上到下出现的时间可以由此调节
Next
Next
明白了以上制作原理以后,图片从下到上、从做到右、从右到左出现的效果也就可以实现了。
<  
1/2 1 2 下一页 尾页 |