- 零基础学Visual Basic第2版
- 李俊民 赵东等编著
- 303字
- 2024-12-20 23:53:31
4.10 图片框
图片框控件相对于图像框控件来说可以说是重量级控件,因为其占用的内存比较大。如果只是显示图片,可以采用前面介绍的图像框,而如果要在其中使用画图语句绘制图形,或者要在其中放置控件,则应该使用图片框。
4.10.1 图片框介绍
图片框不仅可以用来显示图形,也可以作为其他控件的容器,而且还能用Print在其上输出文字,用Line、Circle等方法在其上绘制直线、圆等几何形状。例如语句:
Picture1.Print "Free!"
可以在图片框Picture1中输出字符串“Free!”,又例如:
Picture3.Line (0, 0)-(1000, 5000)
可以在图片框Picture3中画出一条起始点坐标为(0,0),终止点坐标为(1000,5000)的直线。具体详细内容见本书第8章8.4节。
在图片框中加载图形文件的方法和图像框一样,也是使用Picture属性来完成。图片框没有Stretch属性,因此图片框里的图形文件大小永远不会变化,最多只能按照图形文件的尺寸改变图片框的大小。AutoSize属性就是为了这个目的而存在的,该属性为True时图片框的大小会随着图形文件的尺寸而变化,而如果为False时图片框大小不会被改变,因此图形文件只能露出一部分。图片框有一个很有意思的属性是Image属性,该属性从属性窗口中是找不到的,只能在运行阶段使用,用来拷贝图片框中露出的那部分图形而并非是整个图形。
【实例4.13】做一个简单的关于Image属性的试验。下面一切对象的名称都用默认名称。按照图4.26的布局,在窗体上画3个图片框和两个按钮,图片框所有属性均取默认值,按钮只改变其Caption属性。
图4.26 实例4.13运行结果
编写程序如下。
01 Private Sub Command1_Click() 02 Picture2.Picture = Picture1.Image '将Picture1.Image赋值给了Picture2.Picture 03 End Sub 04 05 Private Sub Command2_Click() 06 Picture3.Picture = Picture1.Picture '将Picture1.Picture赋值给了Picture3.Picture 07 End Sub 08 09 Private Sub Form_Load() 10 Picture1.Picture = LoadPicture(App.Path & "\pic\hat.jpg") 11 End Sub
【代码说明】当单击Command1按钮时,代码第02行将Picture1.Image赋值给了Picture2.Picture,所以虽然Picture2的尺寸够大,但是在Picture2中却只能看到在的Picture1中露出来的部分。而单击Command2按钮时,代码第06行将Picture1.Picture赋值给了Picture3.Picture所以在Picture3中可以看到Picture1中载入的全图。
【运行效果】程序运行后首先自动触发Form_Load事件,将图形文件载入到图片框Picture1内,因为该图片框比图形文件的尺寸小,所以只露出了图形的一部分。运行结果如图4.27所示。
图4.27 实例4.13运行结果
4.10.2 应用案例—移动小蜜蜂
【实例4.14】如图4.28所示,编写一个使用按钮移动小蜜蜂的程序。实现的效果是:单击窗口上的方向按钮时小蜜蜂就会做相应的移动。其中,显示蜜蜂的图像框在图片框内部。
图4.28 实例4.14运行结果
各对象的属性设置如表4.16所示。
表4.16 实例4.14对象的属性设置
编写事件过程如下。
01 Private Sub cmdDown_Click() 02 imgBee.Top = imgBee.Top + 100 03 End Sub 04 05 Private Sub cmdLeft_Click() 06 imgBee.Left = imgBee.Left - 100 07 End Sub 08 09 Private Sub cmdRight_Click() 10 imgBee.Left = imgBee.Left + 100 11 End Sub 12 13 Private Sub cmdUp_Click() 14 imgBee.Top = imgBee.Top - 100 15 End Sub
【代码说明】本例中,图片框充当了容器的作用,而图像框imgBee是这个容器中的对象。所以对于imgBee来说,其Top属性是图片框的顶端到imgBee上边界之间的距离,其Left属性是图片框左边到imgBee左边界之间的距离。代码第02、06、10行分别设置其Left属性,而代码第14行设置其Top属性。