手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>VB>列表

API实现完美的图片出现效果

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!


   你不能简单地产生一个随机数,然后将这个随机数的值所对应的那一小块图片拷到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
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!