11、图片框(Picture Box)
作用:添加图形的容器。
在面向对象程序设计过程中,每一个对象的添加都必须有对应的载体或容器。在前面介绍的窗体、框架控件和图片框控件都可以作为容器来添加其他控件,与窗体和框架控件相比,图片框控件用作容器时,具有更多的图形功能。
Picture Box控件支持下列5种图形格式:
-
Bitmap位图:它将图像定义为点(像素)的图案。位图的文件扩展名是.bmp或.dib。
-
Icon图标:这是一种特殊类型的位图。图标的最大尺寸为32像素x 32像家,但在windows 98下,图标也可为16x16像素大小。图标的文件扩展名为.ico。
-
Metafile图元文件:这是将图形定义为编码的线段和图形。普通图元文件扩展名为.wmf。
-
JPEG:Internet上一种流行的压缩位图格式,支持8位和24位颜色。
-
GIF;Internet上一种流行的压缩位图文件格式,它可支持多达256种颜色。
(1)图片框的特殊属性
Align属性——返回或设置一个值,确定对象是否可在窗体上以任意大小、在任意位置上显示,或是显示在窗体的顶端、底端、左边或右边,而且自动改变大小以适应窗体的宽度。
语法结构:
object.Align [ = number ]
Align 属性的设置值及其说明
设置 |
数字 |
说明 |
VbAlignNone |
0 |
无,可以在设计时或在程序中确定大小和位置 |
VBAlignTop |
1 |
顶部,对象显示在窗体的顶部,其宽度等于窗体的ScaleWidth属性设置值 |
VbAlignBotton |
2 |
底部,对象显示在窗体的底部,其宽度等于窗体的ScaleWidth属性设置值 |
VbAlignLeft |
3 |
左边,对象在窗体左面,其宽度等于窗体的ScaleWidth属性设置值 |
vbAlignRight |
4 |
右边,对象在窗体右面,其宽度为窗体的ScaleWidth属性设置值 |
注意:
Appearance 属性——用于设置窗体上PictureBox控件在设计时的绘图风格。它有两个设置值:
0——平面绘制控件和没有可视化效果的窗体
1——带有三维效果的绘制控件
AutoRedraw 属性——用于设置控件使图形持久地输出,即是否具有自动重绘功能。
语法结构:
object.AutoRedraw [ = Boolean ]
Ture——有自动重绘的效果,图形和文本输出到屏幕的同时存储在内存的图像中
False——无自动重绘的效果,且将图形或文本只写到屏幕上
例1:见教材P147。
界面:

代码:
Private Sub Form_Click()
Dim x, y As Integer Dim r As Integer Picture1.AutoRedraw = True x = Picture1.ScaleWidth / 2 y = Picture1.ScaleHeight / 2 For r = 0 To Picture1.ScaleWidth / 2 Picture1.Circle (x, y), r, RGB(Rnd * 255, Rnd * 255, Rnd * 255) Next r Picture1.AutoRedraw = False
End Sub
[程序演示] [程序下载]
关于随即函数Rnd 一般格式:Rnd(x) 其中:x可以是任意数值,一般取正数1。随机函数也可以写成Rnd。 功能:产生大于0而小于1的随机数。 要真正产生不同的随机熟,必须使用播种语句Randomize [Timer]。 |
AutoSize 属性——该属性用于设置控件是否具有自动改变大小的功能,以适应图象文件的尺寸,显示图象文件的内容。
语法结构:
object.AutoSize [ =Boolean ]
ture——自动改变控件大小以适应显示全部内容
False——保持控件大小不变,超出控件区域部分的内容被裁剪掉
Image ——该属性用于返回持久图形的句柄,该句柄由Microsoft Windows 运行环境提供。
语法结构:
object.Image
例2:随机画同心圆,并把绘制的图形保存到指定的位图文件中。见教材P150。
界面:

AutoRedraw属性设置为True。
代码:
Private Sub Form_Load()
Picture1.Picture = LoadPicture("") '清空控件上的图形
End Sub
Private Sub Form_Click()
Dim x, y, r As Integer x = Picture1.ScaleWidth / 2 y = Picture1.ScaleHeight / 2 '设置圆心坐标X、Y的位置 For r = 0 To Picture1.ScaleWidth / 2 Picture1.Circle (x, y), r, RGB(Rnd * 255, Rnd * 255, Rnd * 255) '画圆 Next r
SavePicture Picture1.Image, "1.bmp" '保存图片到文件 End Sub
[程序演示] [程序下载]
Picture属性——通过对Picture属性的设置可以确定图片框控件引入的图片名称。
装入图形文件的方法:
★在设计阶段,可以通过属性窗口直接设置Picture属性,或者可以使用剪贴板(使用方法是常用的复制Ctrl+C和粘贴Ctrl+V)。
★在程序运行阶段,利用LoadPicture函数来设置。
LoadPicture函数的功能是将图形载入到窗体的Picture属性、PictureBox控件或Image控件。
语法结构:
Picture1.Picture=LoadPicture("路径及图形文件名")
注意:
(1)要使用西文引号。
(2)如果LoadPicture方法括号中空白,如:
Picture1.Picture=LoadPicture()
则可以清除图形,即使在设计时曾向图形窗口的Picture属性加载了图形。
(3)在设计阶段装入的图形,会与窗体一起保存在文件中,当生成可执行文件时,不必提供需要装入的图形文件,这样使用安全,但窗体文件大;而在运行期间利用LoadPicture函数装入的图形,必须确保能找到相应的图形文件,否则显示出错信息。
(4)装入图片框中的图形可以被拷贝到另一个图片框中。通过语句
Picture1.Picture=Picture2.Picture
可把图片框Picture1的图形拷贝到Picture2中。
(2)Paint 事件
作用:该事件用于填充图案。
在一个对象被移动或放大之后,或在一个覆盖该对象的窗体被移开之后,该对象部分或全部暴露时,此事件发生。
语法结构:
Private Sub Picture1_Paint ( )
例3:在Picture Box控件上绘制一个填充圆当窗体的大小和位置改变时,要在窗体上重新输出一个填充圆。见教材P152。
界面:
属性设置:Picture1的Align属性为2(底部),FillColor可选择颜色(本例为粉红色),FillStyle为6(为网格状),AutoRedraw属性设置为Flase。
代码:
Private Sub Picture1_Paint ( )
Dim x, y x = Picture1.ScaleLeft + Picture1.ScaleWidth / 2 y = Picture1.ScaleTop + Picture1.ScaleHeight / 2 Picture1.Circle (x, y), 550
End Sub
Private Sub Picture1_Resize()
Refresh '更新
End Sub
[程序演示] [程序下载]
(3)方法
PaintPicture方法 ——该方法用于在PictureBox控件上绘制图形文件的内容。
主要绘制的图形类型有:*·bmp 、*·wmf 、*·emf 、*·ico 、*·dib
语法结构:
object.PaintPicture picture, x1 ,y1,width1, height1 ,x2 ,y2 ,width2 ,height2 ,opcode
(红色为必选项)
语法说明如下:
参数 |
说明 |
Object |
一个对象表达式,如果省略object,带有焦点的Form对象缺省为object |
Picture |
要绘制到object上的图像来源 |
X1,y1 |
指定在控件上绘制picture的目标坐标(x-轴和y-轴) |
Width1 |
指示picture的目标宽度,如果该参数省略,则使用源宽度 |
Height1 |
指示picture的目标高度,如果该参数省略,则使用源高度 |
X2,y2 |
指示picture内剪贴区的坐标(x-轴和y-轴),如果该参数省略,则缺省为0 |
Width2 |
指示picture内剪贴区的源宽度,如果该参数省略,则使用整个源宽度 |
Height2 |
指示picture内剪贴区的源高度,如果该参数省略,则使用整个源高度 |
Opcode |
是长型数值或仅由位图使用的代码 |
例4:显示一幅逐渐缩小的位图文件的程序,见教材P156。
界面:

属性设置:Picture2的Visible设置为False,Picture加载一副图,AutoSize为Ture。
代码:
Private Sub Picture1_Click()
Dim i As Double '定义一个变量 For i = 1 To 10 Step 0.01 Picture1.PaintPicture Picture2.Picture, 0, 0, Picture1.ScaleWidth, _ Picture1.ScaleHeight, i, i, Picture2.ScaleWidth * i, Picture2.ScaleHeight * i '复制图像 Cls '清除图像 Next
End Sub
[程序演示] [程序下载]
Print方法——使用Print方法就可在Picture Box控件上输出文本。
例如:
Picture1.Print"This a example."
使用Print方法的前提条件是将AutoRedraw属性设置为Ture。
|