你不能简单地产生一个随机数,然后将这个随机数的值所对应的那一小块图片拷到Picture2中。因为随机数是随机的,所以有可能某些数重复出现,而某些数很久甚至始终未出现。这就造成Picture2中有些块被重复拷贝,而有些块始终未出现。另外,在随机拷贝的后阶段,随机数与以前重复的概率越来越大,这就造成新块出现的时间越来越慢,达不到理想的马赛克效果。
解决的办法是先产生一个随机系列。用一维数组 B(n)记录n个随机值,每一个随机值都在n以内,且各不相同。然后按顺序将B(n)中的随机值读出,并根据这个随机值拷贝对应的图片块。这样,新块出现的速度才能做到均匀,而且保证每个图片块都能出现,从而达到非常完美的马赛克效果。
Dim A(0 To 1000) As Integer
Dim B(0 To 400) As Integer
Dim S1, S2 As Integer
Picture2.Cls
注释:产生随机数组
For I = 0 To 1000
A(I) = 0
Next
For I = 0 To 400
Loop1: k = Int(Rnd() * 1000) 1
If Not (A(k) = 0) Then GoTo Loop1
A(k) = I
Next
For I = 0 To 1000
If Not (A(I) = 0) Then
B(V1) = A(I)
V1 = V1 1
End If
Next
‘根据随机数组的值,拷贝小图片
S1 = Picture1.Width / 20
S2 = Picture1.Height / 20
For I = 0 To 400
k2 = B(I) Mod 20
k1 = ((Int(B(I)) - k2) / 20) * S2
k2 = k2 * S1
r% = BitBlt(Picture2.hDC, k2, k1, S1 2, S2 2, Picture1.hDC, k2, k1, &HCC0020)
For j = 1 To 5000 注释:wait
Next
Next
以上程序在WIN95,VB4中运行通过,在VB3,VB5,VB6中梢加修改,也可以运行通过。图片出现的效果还有很多,限于篇幅所限,就不在这里叙述了。只要你灵活地应用以上方法,一定还能产生更多更美的图片出现效果。这些风格各异的图片出现效果必定会为您的Visual Basic程序增添美丽的情调,使您的程序更富魅力、更具专业。
上一篇: 一组VB实用小程序
下一篇: 在VB中实现闪动标题栏
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




