标题VB中图像显示特效五例
栏目软件世界
作者云飞
发布2001年32期
我们在一些演示程序中经常看到图像以马赛克、水平百叶窗、从左到右等形式出现,这些特殊的图像显示增加了动感,增强了演示效果。那么,在VB中如何实现这些显示特效呢?
一、编程原理
要使图像一部分一部分地显示出来,就需要先把图像分割成若干块,然后按设计的方式依次显示出来。在VB中有Pictureclip控件,利用它可以将图像分割成若干行和列,然后使用PaintPicture方法显示到Picture控件上。
二、程序代码
首先准备一张图片,要求其长和宽均是100的倍数,以方便我们分割。然后在窗体上放置一个Picture控件(Visible=False)、一个Pictureclip控件和一个Image控件。
Option Explicit
Dim i As Integer
Private Sub Form_Load()'主程序
Randomize
Picture1.Height = Image1.Height
Picture1.Width = Image1.Width
PictureClip1.Picture = Image1.Picture
End Sub
Sub ys()'延时子程序
Dim k As Integer
For k = 0 To 30000
Next
End Sub
1.从左到右显示
Private Sub Command1_Click()
Picture1.Cls '清除Picture1中的图像
PictureClip1.Cols = 100 '分割列数
PictureClip1.Rows = 1 '分割行数
For i = 0 To 99
ys '延时
Picture1.PaintPicture PictureClip1.GraphicCell(i), Picture1.Width / 100*(i),0
Next
End Sub
2.从上到下显示
Private Sub Command2_Click()
Picture1.Cls
PictureClip1.Cols = 1
PictureClip1.Rows = 100
For i = 0 To 99
ys
Picture1.PaintPicture PictureClip1.GraphicCell(i),0,Picture1.Height/100*(i)
Next
End Sub
3.从中间向两边伸展显示
Private Sub Command3_Click()
Picture1.Cls
PictureClip1.Cols = 100
PictureClip1.Rows = 1
For i = 0 To 49
ys
Picture1.PaintPicture PictureClip1.GraphicCell(i+50),Picture1.Width/100*(i + 50),0
Picture1.PaintPicture PictureClip1.GraphicCell(49-i),Picture1.Width/100*(49-i),0
Next
End Sub
4.水平百叶窗方式显示
Private Sub Command4_Click()
Picture1.Cls
PictureClip1.Cols = 1
PictureClip1.Rows = 100
Dim j As Integer
For i = 1 To 10
For j = 1 To 10
ys
Picture1.PaintPicture PictureClip1.GraphicCell((j - 1)) * 10 + i - 1), 0, Image1.Height / 100*((j - 1)* 10 + i - 1)
Next
Next
End Sub
5.以马赛克方式显示
Private Sub Command5_Click
Picture1.Cls
PictureClip1.Cols=10
PictureClip1.Rows=10
Dim temp(99) As Integer '定义数组
Dim j As Integer
temp(0) = Int(Rnd*100)'随机产生100个0到99之间不重复的数
For i = 1 To 99
a0:temp(i) = Int(Rnd*100)
For j = 0 To i - 1
If temp(i) = temp(j) Then GoTo a0
Next
Next
For i = 0 To 99 '根据随机数显示
ys
Picture1.PaintPicture PictureClip1.GraphicCell(temp(i)), Picture1.Width / 10*(temp(i) Mod 10),Image1.Height/10*(temp(i)\10)
Next
End Sub
怎么样?很爽吧!利用这个原理,还可以实现“从右到左”、“从下到上”、“从两边向中间闭合”、“垂直百叶窗”、“涡旋方式”等显示方式。开动你的脑筋,实现更多美妙的显示方式吧!