VB中随机图像的魅力

2016-02-19 16:33 8 1 收藏

下面是个VB中随机图像的魅力教程,撑握了其技术要点,学起来就简单多了。赶紧跟着图老师小编一起来看看吧!

【 tulaoshi.com - 编程语言 】

->---在VB中提供了相当强的绘图功能,可以在窗口或图形框中利用各种命令绘制各种图形,灵活使用这些绘图命令不仅可以完成许多特殊的功能,而且可以为WINDOWS的程序界面增加许多活力,特别是那些巧妙的随机图像则更具有特殊的魅力,下面仅以三种随机动画为例,演示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->->

来源:https://www.tulaoshi.com/n/20160219/1612388.html

延伸阅读
前面讲到了二次线性插值的应用。这一篇来给大家讲一下关于锐化、柔化、扩散、雕刻这几个滤镜的实现。 一、锐化 锐化的算法很简单,就是比较相邻的几个像素,把当前像素加上和周围的像素的差就可以了。这里我给出一个示例: ->ABCD EFGH IJKL MNOP-> 假设有一个图片,4*4,共16个像素,分别用A--...
要处理一个图像,首先要获得该图像的像素值,而VB本身提供的PICTURE控件虽然可以打开很多类型的图片,但是它提供的那个POINT方法读取像素实在是太慢。而使用GetPixel这个API的速度也快不到哪里去,因为PIONT方法本身就是对于GetPixel的一个包装。 在VB中要快速获取一幅在PICTURE中打开的图像比较快速的方法是使用DIB方法,当然还有DDB...
标签: vb
概述:这篇文章为计划将他们的应用程序更新到Visual Basic.NET的微软Visual Basic 开发用户提供一些关于XML的建议。主要包括Visual Basic 6和Visual Basic.NET对XML操作的不同之处,以及Visual Basic.NET关于这方面新增工具的应用。 概述:这篇文章为计划将他们的应用程序更新到Visual Basic.NET的微软Visual Basic 开发用户提供一些关于...
VB的功能强大,应用范围广。VB是标准的面向对象编程语言可视编程,采用事件驱动的编程技术。VB含有大量的VBX(控件)。这是一种针对VB的已经编写好的程序,它们在VB中以各种可视的控制对象的形式出现,例如图形按钮,文字编辑框等等,用户根据自己的需要可直接使用,使编程就象使用积木搭建房屋一样简单。 ---- 在多媒体设计中,图像处...
    经常用Authorware制作练习型课件,最近发现了一个问题:学生在多媒体网络教室使用这些课件进行练习时,由于大家的题目都是一样的,所以难免会有学生互相“借鉴”。     因此笔者考虑能否制作随机出题的效果,即随机抽取题库中的题目,并且随机出现,现将本人在Authorware中研究出来的随机出题的制作方法...

经验教程

787

收藏

96
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部