您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> VB >> 辅导 >> 正文    
  VisualBasic中PaintPicture图形常见的使用方法 【注册男护士专用博客】          

VisualBasic中PaintPicture图形常见的使用方法

www.nanhushi.com     佚名   不详 

  在VB中提供了完善的做图方法, 可以在窗体或图形框中绘制各种图形, 其中提供了一个方便的图像处理命令即:PaintPicture, 此命令的功能与WINDOWS 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值,还可以改变复制后的图像的尺寸,实现放大或缩小图像显示, 甚至可以置这两个属性为负值, 这样可使目标图像在水平方向翻转,实现特殊效果的图像显示。

  二、应用举例

  1.墙纸的制作

  所谓的墙纸, 就是用一个小尺寸的图像连续在一个区域显示, 形成规则的重复图像, 也称为图像的平铺显示,利用“PaintPicture"命令可以方便的完成此工作, 即用一个固定的图像资源多次连续复制到窗口中; 复制过程中必须准确计算下一图像的起始位置; 显示过程中可采取两种方法, 第一种方法可置源图像资源即图形框的AutoSize属性为真, 并且显示过程中按源图像的实际尺寸复制, 这是正常的图像平铺显示; 还有一种方法就是通过置AutoSize属性为假, 然后改变图形框的尺寸, 或者直接修改目标图像的尺寸, 这样可实现放大或缩小图像的平铺显示。具体作方法请见Command1_Click()事件中的代码。

  2.随机图像显示

  随机图像在一定场合具有特殊的魅力,比如把一个固定的图像连续的在某一区域中的随机位置显示,这样即可得到一种特殊的屏幕效果,具体操作时需要使用VB的内部函数RND, 此函数可产生0-1之间的随机数, 通过此随机数确定显示的图像的位置即destX与destY参数, 这样即可使图像在随机位置显示, 通过此原理也可以使图像的尺寸等其它参数随机产生, 以产生其它效果的随机图像效果。具体操作方法请见Command2_Click()事件中的代码。

  3.镜头推出效果

  镜头推出效果实际上就是图像的放大或缩小显示, 利用“PaintPicture"命令实现此功能,只需要改变destWidth及destHeight参数即可, 具体操作时需要注意保持图像的中心点不变, 在图像的放大或缩小过程中同时改变图像的起始坐标。此命令的图像显示速度不低于API函数的BitBlt命令, 图像放大或缩小过程中基本没有抖动的感觉。具体操作方法请见Command3_Click()事件中的代码。

  4.拖尾效果的形成

  此效果的形成与图像的放大过程基本相似,区别在于无需保持中心点不变,而在图像的放大过程中,向一个方向逐渐改变图像的起始位置,并且起始的图像尺寸置为0,这样当图像放大显示到一定位置时,其后面就留下了多彩的拖尾效果。具体操作方法请见Command4_Click()事件中的代码。

  三、演示程序

  文后的程序完整的演示了上述各种图像的特殊处理效果,编程需要在From1窗体中安放两个图形框Picture1 及Picture2, 还有五个命令按钮Command1-Command5,之后把下述代码填入相应的事件中, 运行程序后通过按钮1-4即可演示上述的四种图像处理效果, 按"退出"按钮则结束程序。以上方法及程序在WINDOWS95系统、VB4.0环境下调试通过。

  图像平铺显示

  Private Sub Command1_Click()

  Dim numm As Integer

  Picture1.AutoSize = True

  roww = Int(Form1.Width / Picture1.Width) + 1

  coll = Int(Form1.Height / Picture1.Height) + 1

  For i = 0 To roww

  For j = 0 To coll

  Form1.PaintPicture Picture1.Picture,j*Picture1.Width,i*Picture1.Height,Picture1.Width,Picture1.Height

  numm = numm + 1

  Form1.Caption = "使用图像个数:" + Str$(numm)

  Next j

  Next i

  Picture1.Visible = 0

  End Sub

  随机图像显示

  Private Sub Command2_Click()

  Picture1.AutoSize = True

  Do

  xx = Rnd * Picture2.Width

  yy = Rnd * Picture2.Height

  Picture2.PaintPicture Picture1.Picture, xx, yy,Picture1.Width,Picture1.Height

  DoEvents

  Loop

  End Sub

  镜头推出效果

  Private Sub Command3_Click()

  Picture2.Cls

  Picture1.AutoSize = False

  Picture1.Width = 0

  Picture1.Height = 0

  For i = 0 To 2000 Step 2

  roww = (Picture2.Width - Picture1.Width) / 2 - i / 2

  coll = (Picture2.Height - Picture1.Height) / 2 - i / 2

  Picture2.PaintPicture Picture1.Picture, roww, coll,Picture1.Width + i, Picture1.Height + i

  DoEvents

  Next i

  For i = 2000 To 0 Step -2

  roww = (Picture2.Width - Picture1.Width) / 2 - i / 2

  coll = (Picture2.Height - Picture1.Height) / 2 - i / 2

  Picture2.PaintPicture Picture1.Picture, roww, coll,Picture1.

  Width + i, Picture1.Height + i

  DoEvents

  Next i

  Picture1.AutoSize = True

  End Sub

  拖尾效果

  Private Sub Command4_Click()

  Picture2.Cls

  Picture1.AutoSize = False

  Picture1.Width = 0

  Picture1.Height = 0

  For i = 0 To 2000 Step 2

  stepp = i / 2

  Picture2.PaintPicture Picture1.Picture, stepp, stepp,Picture1.Width + i, Picture1.Height + i

  DoEvents

  Next i

  Picture1.AutoSize = True

  End Sub

  结束按钮

  Private Sub Command5_Click()

  End

  End Sub

  准备工作

  Private Sub Form_Load()

  Picture1.Picture = LoadPicture("d:\windows\256color.bmp")

  Command1.Caption = "图像平铺"

  Command2.Caption = "随机显示"

  Command3.Caption = "镜头伸缩"

  Command4.Caption = "拖尾效果"

  Command5.Caption = "退出"

  End Sub

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    专 题 栏 目

      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)                            【进男护士社区逛逛】
    姓 名:
    * 游客填写  ·注册用户 ·忘记密码
    主 页:

    评 分:
    1分 2分 3分 4分 5分
    评论内容:
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。