VB中Image与PictureBox控件的一些使用技巧

翻译|其它|编辑:郝浩|2004-03-31 00:08:00.000|阅读 2599 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

有些初学VB的同学对一些控件的属性方法也了解了一些,但是当真的想用他们解决一些实际的问题时却又找不到有效的办法.经常是脑子里有了很好的创意但是在用程序实现时却遇到了这样与那样的问题.这的确叫人郁闷,我在学习的过程中同样遇到了不少这样的问题,因此我想给出几个小的技巧供同学们参考,希望叫那些初出茅庐的同学少走些弯路.

  当我在使用Image与PictureBox控件时遇到了一些困难,经过同学的指点与自己的研究,有了一点小小的收获,想拿出来与大家探讨一下.

  我想,假如要很灵活的运用这两个控件你就必须了解这两个控件的特点与常用属性和方法.如果你是一个VB初级用户的话,那么看下面的一段应该说是必要的,要是你已经对这些很熟悉了,可以略过他.

  图像框(Image)和图片框(PictureBox)都是用于显示图形,可以显示.bmp;.ico;.wmf; .jpg;.gif等类型的文件.图片框不仅可以显示图像,还可以作为其他控件的容器,因此PictureBox控件比Image控件功能更强.

  一些属性:

  (1)Picture属性:用于设置在图像框与图片框重要显示的图像文件名.科在设计是通过属性或在运行时调用LoadPicture函数来设置.

  例如: Picture1.Picture=LoadPicture("D:\Pic\Girl.jpg")

  (2)Align属性
  Align属性用于设置图片框再窗体中的显示方式.0(默认)无特殊显示,1为与窗体一样宽,位于窗体顶端;2为与窗体一样宽,位于窗体底端;3为与窗体一样高, 位于窗体左端;4为与窗体一样高,位于窗体右端.

  (3)Image的Stretch属性
  Stretch属性用于确定图像框如何与图片相适合.True为图像将适应图像框的大小,False为图像框将适应图像的大小.

  (4)图片框的AutoSize属性
  AutoSize属性用于确定图片框如何与图像相适应.False为保持原始尺寸,当图形比图片框大时,超出的部分被截去,True为图片框根据图形大小自动调整,也就是说图片多大,图片框就变成多大.

  下面我就基于这两个控件介绍两个很简单的技巧: 

  (一)如何实现对于过大图片的按比例缩小

  有的同学看到这里可能就会问缩小一副图片只要将Image的Stretch属性设为True不就行了吗.话随这样说,但是仔细想一下这样不可能实现将一副图片按照相同的比例缩小.因为图像框的大小不能保证和图片是成比例的.那么用什么方法解决这个问题呢?应该用Move方法解决.

  其实Move方法可以用在很多控件中,甚至数据库控件中也有它的身影.但我只介绍一下他在本问题里的应用.Move方法既可用于Image控件又可用于PictureBox控件中.他的用法为:

  对象.Move Left,Top,Width,Hight 

  其中"对像"为要使用的控件名,这里可以是Image1或PictureBox1."Left,Top"分别为对象左上角在所在容器的坐标,"Width,Hight"为对象的宽和高.现在知道了这个方法那么实现图片的按比例缩小就显得很简单了.我们可以将图片放于一个Image或者PictureBox中,然后用Move语句设置图片的位置,与缩小的比例.但还需要一个步骤,你还要求出图片的宽度与高度才能按照你规定的比例缩小.求图片的宽和高可用下面的语句: Image1.Picture.Width, Image1.Picture.Height.可求出他们.现在大功告成了,图片可以缩小了.缩小时可用下面的语句: 

  Image1.Move 4320,240,Val(Image1.Picture.Width)/3,Val(Image1.Picture.Height)/3
  '4320,240为图片的左上坐标.将图片缩小1/3.

  (二)如何实现图片的拖动

  上面的例子其实很简单,但假如你想不到Move的话就不那么好办了.下面的技巧同样很简单,但是要实现图片的拖动就不得不使用MouseDown, MouseUp,MouseMove三个事件.现在我们先分析一下图片拖动的过程.首先你要用鼠标拖动一副图时下按下了鼠标左键,这就触发了MouseDown事件.当你拖住鼠标并移动鼠标时就触发了MouseMove事件,拖动完毕放开左键时又触发了MouseUp事件.

  下面我先介绍一下这三个事件:

  MouseUp和MouseDown用法一样
  MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

  变量Button决定鼠标哪个键被按下.
  1--鼠标左键按下 2--鼠标右键按下 4--鼠标中键按下

  变量Shift提供鼠标键按下时SHIFT,Ctrl,Alt件组合的代码:
  No key pressed      0  Shift                 1
  Shift+Ctrl          3  Shift+Alt             5
  Alt                 4  Alt+Ctrl              6
  Ctrl                2  Shift+Ctrl+Alt        7

  X,Y:控件或窗体的当前位置坐标--MouseDown,MouseUp事件触发的水平和垂直位置.

  MouseMove 用法
  MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

  Button,Shift参数与前面的相似,这里不再赘述.X,Y为MouseMove触发时鼠标的水平和垂直位置.下面用一段例程说明如何用这三个元素实现图片的拖动:

  Dim xp As Integer
  Dim yp As Integer
  Dim xz As Integer
  Dim yx As Integer

Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  Button = 1
  xp = X
  yp = Y
  Image1.MousePointer = 7
End Sub

Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  If xp <> 0 And yp <> 0 Then
    Image1.Left = Image1.Left + (X - xp)
    Image1.Top = Image1.Top + (Y - yp)
  End If
  xz = Image1.Left
  yz = Image1.Top
End Sub

Private Sub Image1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  Button = 1
  xp = yp = 0
  Image1.MousePointer = 0
End Sub

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP