VB实现图像切换效果(拼图可用)
(2012-02-15 14:44:59)
标签:
杂谈 |
分类: vb教学 |
孙金萍
在多媒体程序演示及屏幕保护程序中常看到图像的自动切换特技效果,其实我们完全可以利用VB中的PaintPicture方法来实现这一效果。与以前调用Windows API函数BitBlt相比,前者更易使用且调用速度快五倍。
PaintPicture方法允许我们将象素从一个对象拷贝到另一个对象上。它可在一刹那间将一个图片框的一块矩形的部分转移到另一个图片框或一个窗体上,完成拷贝、翻转、改变大小、重新定位、组合以及其它操作。
1 基 本 句 法
intPicture
Picture,DestX,DestY,DestWidth,Destheight,SourceX,SourceY,SourceWidth,SourceHeight,RasterOp
第一个参数Picture是该控件(图片框或窗体)(象素将从中被拷贝)的Picture属性;
DestX和DestY是目的对象的左上角坐标;
DestWidth和DestHeight描述被拷贝图片的大小;
SourceX和SourceY用来说明预拷贝源图片左上角的坐标;
SourceWidth和SourceHeight描述预给目的对象传递方块的尺寸;
RasterOp表示各种拷贝模式,常用的是&HCC0020或省略。
2 应 用 实 例
1.创建项目文件
运行VB,建立一个工程文件Project1,添加一个新的Form名称为Form1。在Form1中加入两个图片框PictureBox和几个定时器Timer(对应图片文件的个数)。设置各控件的属性如下:
Form1:AutoRedraw=True;
ScaleMode=3;
Picture1:AutoRedraw=True;
ScaleMode=3
Visible=False
Picture2:AutoRedraw=True
ScaleMode=3
Visible=True
2.代码编写
声明全局变量:
Dim j, i As Integer
Dim stripes As Integer
Dim stripeheight As Integer
窗体初始化:
Private Sub Form-Load()
Form1.WindowState=vbMaximized
Timer1.Enabled=True
Timer2.Enabled=False
Timer3.Enabled=False
Timer4.Enabled=False
Timer5.Enabled=False
Timer1.Interval=10 ′启动定时器1
End Sub
功能实现程序:Private Sub Timer1-Timer()
i=0
j=0
Picture1.Picture=LoadPicture(App.Path+″\Back1.bmp″) ′装入图片1
timer1.Enabled=False ′关闭定时器1
Timer2.Enabled=True ′启动定时器2
Timer2.Interval=50
End Sub
Private Sub Timer2-Timer()
If i<=Picture1.ScaleHeight Then
i=i+100
Picture2.PaintPicture
Picture1.Picture,0,0,Picture1.ScaleWidth,i,0,-0,Picture1.ScaleWidth,i
Else
Timer2.Enabled=False
Picture1.Picture=LoadPicture(App.Path+″\Back2.bmp″) ′装入图片2
Timer3.Enabled=True ′启动定时器3
Timer3.Interval=50
End If
End Sub
Private Sub Timer3-Timer()
If j<=Picture1.ScaleWidth Then
j=j+100
Picture2.PaintPicture
Picture1.Picture,Picture1.ScaleWidth-j,0,j,-
Picture1.ScaleHeight,Picture1.ScaleWidth-j,0,j,Picture1.ScaleHeight
Else
Timer3.Enabled=False
Picture1.Picture=LoadPicture(App.Path+″\Back3.bmp″)
Timer4.Enabled=True ′启动定时器4
Timer4.Interval=50
End If
End Sub |