VB中随机图像的魅力
下面是个VB中随机图像的魅力教程,撑握了其技术要点,学起来就简单多了。赶紧跟着图老师小编一起来看看吧!
一、随机简单图形动画
----完成此工作主要的直接使用VB中的作图命令,比如画点函数PSet(X,Y),COLOR,其中XY为图形坐标系统的坐标,COLOR表示颜色值,可用QBColor(x)或RGB(r,g,b)等形式表示,同时可以控制画点的半径长度,即通过设置Drawwidth属性,当半径大于1时实际上此命令是画一个实心圆,当然也可以利用Circle命令直接绘制圆形。VB中还提供了随机数产生手段,即RND内部函数,它可以产生0到1之间的随机数,利用此函数可以随机确定画点的位置、点的颜色、点的半径等,这样即可以实现在固定区域内进行随机画圆操作,其中随机位置的确定必须根据作图区域进行确定,具体可用ScaleWidth及Scaleheight属性进行确定。为了实现连续动画效果,可利用时间控件或"DoEvents"命令实现后台处理,具体请见文后的Command1_Click事件中的程序代码。如果把程序改为随机画矩形或空心圆,或者灵活控制画圆的半径,则会产生另外的艺术效果,比如在一片黑色的屏幕上画出随机的小点,就象夜空中的点点繁星。
二、随机文字动画
----在VB中可利用"Print"命令进行字符串的显示工作,此命令一般只在当前位置显示字符串,但具体操作时可通过CurrentX和CurrentY控制字符串显示位置,通过FontSize控制字体的尺寸,通过ForeColor和BackColor控制字符的前景色和背景色,如果把上述的各项属性值均采用RND进行随机产生,即会形成随机字符显示效果,比如在一个图形框中显示一些新年贺辞,同时播放美妙的音乐,那将是一份极好的新年礼物。需要注意一点,由于字体互相覆盖,长时间显示会使窗口显得乱一些,所以最好按一定时间用"CLS"命令进行窗口清除。此处说明一下颜色的控制技巧,如果使用QBColor(Rnd*15)方式定义随机颜色,只能在16种颜色中随机产生,而采用RGB(Rnd*256,Rnd*256,Rnd*256)方式则可以产生256*256*256种不同的颜色,但具体的颜色特性受当前WINDOWS屏幕模式的限制。具体操作方式请见文后Command2_Click事件中的代码。
三、立体图形随机动画
----上面只是直接利用绘图语句进行简单的动画,如果通过这些命令绘制成一定的立体图形,并实行随机动画操作,那将更具有特殊的艺术效果。比如下面两行简单的命令将画出一个具有强烈立体感效果的三角锥体,其中(M,N)为锥体的顶端坐标:
Picture1.Line(m,n 2.5*i)-(m i/2,n 2*i),RGB(180,180,180)
Picture1.Line(m,n 2.5*i)-(m-i/2,n 2*i),RGB(80,80,80)
----如果把屏幕的底色置为暗黄色,在此窗口内的随机位置画出大小不一的三角锥,就象在黄色的沙漠上建起了无数的金字塔,具有一种特殊的情趣。具体操作方法请见文后程序中的Command3_Click事件中的代码。
四、随机显示图像
----在VB中不仅提供了完善的做图方法,而且在绘图方法中还可以灵活的处理图像文件,其中提供了一个方便的图像复制命令即:PaintPicture,此命令的功能与API函数BitBlt类似,但由于不用做API函数说明,所以更有它的方便之处,语法格式:
PaintPicturePic,destX,destY,
destWidth,destHeight,
scrX,scrY,scrWidth,scrHeight
其中Pic:为图片对象,如图形框Picture等;
destX,destY:目标图像位置;
destWidth,destHeight:目标图像尺寸;
scrX,scrY:原图像的裁剪坐标;
scrWidth,scrHeight:原图像的裁剪尺寸;
----从以上可以看出,目标图像的位置可以随机改变,不仅如此,通过改变destWidth与destHeight值,还可以改变复制后的图像的尺寸,实现放大或缩小图像显示,甚至可以置这两个属性为负值,这样可使目标图像在水平方向翻转,实现特殊效果的图像显示,灵活运用RND随机函数确定上述各个参数,可取得理想的随机图像显示效果。具体操作方法请见文后程序Command4_Click事件中的代码。
----文后是一个完成上述随机动画的完整演示程序,需要在From1窗体中安放两个图形框Picture(1-2)及四个命令按钮Command1-5,然后把下面的代码填入相应的事件处,运行此程序之后,按下按钮1则在图形框中进行随机画圆演示,按下按钮2则在图形框中进行随机文字显示,按下按钮3则在图形框中随机显示三角锥体,按下按钮4则进行随机图像显示,按下按钮5则退出程序。此程序在WINDOWS95系统下VB4.0环境下调试通过。
注释:程序准备
PrivateSubForm_Load()
Command1.Caption="随机画圆"
Command2.Caption="随机文字"
Command3.Caption="立体图形"
Command4.Caption="随机图像"
Command5.Caption="退出"
Form1.ScaleMode=1
Picture1.ScaleMode=1
Picture2.Picture=LoadPicture
("d:windows256color.bmp")
EndSub
注释:随机画圆动画
PrivateSubCommand1_Click()
DimXPos,YPos
Picture1.Cls
Do
nn=Int(100*Rnd)
Ifnn0Then
Picture1.DrawWidth=nn
EndIf
XPos=Rnd*Picture1.ScaleWidth
YPos=Rnd*Picture1.ScaleHeight
Picture1.PSet(XPos,YPos),RGB
(Rnd*256,Rnd*256,Rnd*256)
DoEvents
Loop
EndSub
注释:随机文字动画
PrivateSubCommand2_Click()
Picture1.Cls
Do
nn=Int(45*Rnd)
Ifnn0Then
Picture1.FontSize=nn
EndIf
Picture1.CurrentX=
Rnd*Picture1.ScaleWidth-1000
Picture1.CurrentY=
Rnd*Picture1.ScaleHeight
Picture1.ForeColor=
RGB(Rnd*256,Rnd*256,Rnd*256)
Picture1.Print"随机OK!"
n=n 1
Ifn50Then
n=0
Picture1.BackColor=QBColor(Rnd*15)
EndIf
DoEvents
Loop
EndSub
注释:立体随机动画
PrivateSubCommand3_Click()
Dimm,n
Picture1.DrawWidth=1
Picture1.BackColor=RGB(210,150,0)
Picture1.Cls
Do
m=Rnd*Picture1.ScaleWidth
n=Rnd*Picture1.ScaleHeight-500
Fori=0ToRnd*800
Picture1.Line(m,n 2.5*i)-(m i/2,n 2*i),
RGB(180,180,180)
Picture1.Line(m,n 2.5*i)-(m-i/2,n 2*i),
RGB(80,80,80)
Nexti
DoEvents
Loop
EndSub
注释:随机图像显示
PrivateSubCommand4_Click()
Do
xx=Rnd*Picture1.Width
yy=Rnd*Picture1.Height
Picture1.PaintPicturePicture2.
Picture,xx,yy,
Picture2.Width,Picture2.Height
DoEvents
Loop
EndSub
注释:退出按钮
PrivateSubCommand5_Click()
End
EndSub->->