转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
VB中随机图像的魅力         ★★★★

VB中随机图像的魅力

作者:闵涛 文章来源:闵涛的学习笔记 点击数:642 更新时间:2009/4/23 14:57:48
  在VB中提供了相当强的绘图功能, 可以在窗口或图形框中利用各种命令绘制各种图形, 灵活使用这些绘图命令不仅可以完成许多特殊的功能, 而且可以为WINDOWS 的程序界面增加许多活力, 特别是那些巧妙的随机图像则更具有特殊的魅力, 下面仅以三种随机动画为例, 演示VB中随机动画图像的风采。

一、随机简单图形动画

  完成此工作主要的直接使用VB中的作图命令, 比如画 点函数PSet(X,Y),COLOR, 其中X Y为图形坐标系统的坐标, 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函数说明,所以更有它的方 便之处, 语法格式:

PaintPicture Pic,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 则退出程序。此程序在WINDOWS 95 系统下VB4.0环境下调试通过。


程序准备
Private Sub Form_Load()
Command1.Caption = "随机画圆"
Command2.Caption = "随机文字"
Command3.Caption = "立体图形"
Command4.Caption = "随机图像"
Command5.Caption = "退出"
Form1.ScaleMode = 1
Picture1.ScaleMode = 1
Picture2.Picture = LoadPicture
("d:\windows\256color.bmp")
End Sub
随机画圆动画
Private Sub Command1_Click()
Dim XPos, YPos
 Picture1.Cls
 Do
 nn = Int(100 * Rnd)
 If nn > 0 Then
 Picture1.DrawWidth = nn
 End If
 XPos = Rnd * Picture1.ScaleWidth
 YPos = Rnd * Picture1.ScaleHeight
Picture1.PSet (XPos, YPos), RGB
(Rnd * 256, Rnd * 256, Rnd * 256)
 DoEvents
 Loop
End Sub
随机文字动画
Private Sub Command2_Click()
 Picture1.Cls
 Do
 nn = Int(45 * Rnd)
 If nn > 0 Then
 Picture1.FontSize = nn
 End If
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
 If n > 50 Then
 n = 0
 Picture1.BackColor = QBColor(Rnd * 15)
 End If
 DoEvents
 Loop
End Sub
立体随机动画
Private Sub Command3_Click()
Dim m, n
Picture1.DrawWidth = 1
Picture1.BackColor = RGB(210, 150, 0)
Picture1.Cls
Do
m = Rnd * Picture1.ScaleWidth
n = Rnd * Picture1.ScaleHeight - 500
For i = 0 To Rnd * 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)
Next i
DoEvents
Loop
End Sub
随机图像显示
Private Sub Command4_Click()
Do
xx = Rnd * Picture1.Width
yy = Rnd * Picture1.Height
Picture1.PaintPicture Picture2.
 Picture, xx, yy,
 Picture2.Width, Picture2.Height
DoEvents
Loop
End Sub
退出按钮
Private Sub Command5_Click()
End
End Sub


[VB.NET程序]GSM短信模块库函数,可以用VB,VC,调用简单实用  [办公软件]PowerPoint做交互课件之弃用VBA
[办公软件]VBA获取U盘、主板、CPU序列号和网卡MAC地址  [办公软件]VBA设置文件属性及加密源代码示例
[办公软件]VBA中初始化ADO连接的几种方法  [网络安全]“VB破坏者变种N”病毒摘要
[Web开发]ASP.NET上传文件到数据库VB版  [办公软件]在Excel中利用VBA实现多表单元格数据的读取与赋值…
[办公软件]使用Vba读取已关闭的Excel工作薄数据到当前工作表…  [办公软件]Excel编程基础之VBA文件操作详解
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台