1、第第11章章 图形操作图形操作11.1 图形操作基础图形操作基础11.2 绘图属性绘图属性11.3 图形控件图形控件11.4 图形方法图形方法第第11章章 图形操作图形操作图形技术作为当今应用程序开发中最重要的图形技术作为当今应用程序开发中最重要的组成部分,可以为应用程序的界面增加趣味,组成部分,可以为应用程序的界面增加趣味,提供可视结构。提供可视结构。Visual Basic提供了丰富的提供了丰富的图形处理功能,我们不仅可以通过图形控件图形处理功能,我们不仅可以通过图形控件进行图形和绘图操作,还可以通过图形方法进行图形和绘图操作,还可以通过图形方法在窗体或图片框中输出文字和图形。在窗体或图片
2、框中输出文字和图形。VB的的图形方法还可以作用于打印机对象。图形方法还可以作用于打印机对象。11.1图形操作基础图形操作基础 在在VB中,每个对象都定位于存放它的容器中,对象定中,每个对象都定位于存放它的容器中,对象定位都要使用容器的坐标系。例如,窗体处于屏幕内,屏幕就位都要使用容器的坐标系。例如,窗体处于屏幕内,屏幕就是窗体的容器。在窗体内绘制对象,窗体就是容器。如果在是窗体的容器。在窗体内绘制对象,窗体就是容器。如果在图片框内绘制图形,该图片框就是容器。容器内的对象只能图片框内绘制图形,该图片框就是容器。容器内的对象只能在容器界定的范围内移动,当移动容器时,容器内的对象也在容器界定的范围内
3、移动,当移动容器时,容器内的对象也随着一起移动,而且与容器的相对位置保持不变。随着一起移动,而且与容器的相对位置保持不变。每个容器都有一个坐标系。构成一个坐标系,需要三个每个容器都有一个坐标系。构成一个坐标系,需要三个要素:坐标原点、坐标度量单位、坐标轴的长度与方向。坐要素:坐标原点、坐标度量单位、坐标轴的长度与方向。坐标度量单位由容器对象的标度量单位由容器对象的ScaleMode属性决定,属性决定,ScaleMode属性设置见表属性设置见表11-1。11.1 图形操作基础图形操作基础 用户通过对用户通过对ScaleMode属性的设置,可以获得属性的设置,可以获得8种不同的种不同的坐标度量单位
4、,其中坐标度量单位,其中Twip为系统缺省设置。各度量单位的为系统缺省设置。各度量单位的换算关系如表换算关系如表11-2:表表11-2 各度量单位的换算关系各度量单位的换算关系11.1 图形操作基础图形操作基础 注意:注意:度量单位规定的是对象打印时的大小,屏幕上的实度量单位规定的是对象打印时的大小,屏幕上的实际物理距离可因监视器尺寸而异。际物理距离可因监视器尺寸而异。容器对象的容器对象的ScaleMode属性改变,不会改变容器的大小或属性改变,不会改变容器的大小或它在屏幕上的位置,只是改变对象的度量单位,它在屏幕上的位置,只是改变对象的度量单位,Visual Basic会重新定义对象坐标度量
5、属性会重新定义对象坐标度量属性ScaleHeight和和ScaleWidth,以便使它们与新刻度保持一致。无论采用哪,以便使它们与新刻度保持一致。无论采用哪一种坐标单位,缺省的坐标原点(一种坐标单位,缺省的坐标原点(0,0)为对象的左上角,)为对象的左上角,横向向右为横向向右为X轴的正方向,纵向向下为轴的正方向,纵向向下为Y轴的正方向。轴的正方向。当新建一个窗体时,新窗体采用缺省坐标系,坐标原点在当新建一个窗体时,新窗体采用缺省坐标系,坐标原点在窗体的左上角,窗体的左上角,Height=3600,Width=4800,ScaleHeight=3090,ScaleWidth=4680(单位均为(
6、单位均为twip)。)。图图11-1为缺省情况下的窗体坐标系和窗体内图片框控件坐为缺省情况下的窗体坐标系和窗体内图片框控件坐标系。标系。11.1 图形操作基础图形操作基础 图图11-1 窗体及控件坐标系窗体及控件坐标系HeightScaleHeight(0,0)XYXY(0,0)11.1 图形操作基础图形操作基础 对象的坐标系允许用户自行定义,方法有两种:对象的坐标系允许用户自行定义,方法有两种:方法一:通过设置对象的方法一:通过设置对象的ScaleTop、ScaleLeft、ScaleHeight、ScaleWidth属性来实现属性来实现(1)重定义坐标原点)重定义坐标原点属性属性Scale
7、Top和和ScaleLeft的值是用户定义坐标系中对象左上的值是用户定义坐标系中对象左上角的坐标,所有对象的角的坐标,所有对象的ScaleTop和和ScaleLeft属性的缺省值均属性的缺省值均为为0,坐标原点在对象的左上角。当改变,坐标原点在对象的左上角。当改变ScaleTop或或ScaleLeft的值后,坐标系的的值后,坐标系的X轴或轴或Y轴按此值平移形成新的坐轴按此值平移形成新的坐标原点。标原点。ScaleTop=N,表示将,表示将X轴向轴向Y轴的负方向平移轴的负方向平移N个单位;个单位;ScaleTop=N,表示将,表示将X轴向轴向Y轴的正方向平移轴的正方向平移N个单位。个单位。同样,
8、同样,ScaleLeft的设置值可向左或向右平移坐标系的的设置值可向左或向右平移坐标系的Y轴。轴。11.1 图形操作基础图形操作基础(2)重定义坐标轴方向和度量单位)重定义坐标轴方向和度量单位属性属性ScaleWidth,ScaleHeight的值可确定对象坐标系的值可确定对象坐标系X轴与轴与Y轴的正向及最大坐标值。缺省时其值均大于轴的正向及最大坐标值。缺省时其值均大于0,此时,此时,X轴的轴的正向向右,正向向右,Y轴的正向向下。对象右下角坐标值为轴的正向向下。对象右下角坐标值为(ScaleLeft+ScaleWidth,ScaleTop+ScaleHeight)。如果。如果ScaleWidt
9、h的值小于的值小于0,则,则X轴的正向向左,如果轴的正向向左,如果ScaleHeight的值小于的值小于0,则,则Y轴的正向向上。轴的正向向上。X轴与轴与Y轴的度轴的度量单位分别为量单位分别为1/ScaleWidth和和1/ScaleHeight。11.1 图形操作基础图形操作基础【例例11-1】本例运用方法一重新定义窗体本例运用方法一重新定义窗体Form1的坐标系。在的坐标系。在窗体上建立一个命令按钮窗体上建立一个命令按钮Command1,标题设置为,标题设置为“显示用显示用户自定义坐标系户自定义坐标系”单击该按钮,显示窗体的用户自定义坐标系。单击该按钮,显示窗体的用户自定义坐标系。(本例中
10、用到的(本例中用到的Line方法在方法在11.4节中介绍,节中介绍,CurrentX属性、属性、CurrentY属性在属性在11.2节中介绍。)节中介绍。)11.1 图形操作基础图形操作基础 Private Sub Command1_Click()Form1.Caption=用户自定义坐标系用户自定义坐标系Cls 清除运行时在窗体上中显示的文本和图形清除运行时在窗体上中显示的文本和图形 Form1.ScaleLeft=-300Form1.ScaleTop=200Form1.ScaleWidth=600Form1.ScaleHeight=-400Line(-290,0)-(290,0)画画X轴轴
11、Line(0,190)-(0,-190)画画Y轴轴CurrentX=10:CurrentY=-5:Print O 标记坐标原点标记坐标原点CurrentX=280:CurrentY=20:Print X 标记标记X轴轴CurrentX=10:CurrentY=190:Print Y 标记标记Y轴轴End Sub11.1 图形操作基础图形操作基础 ScaleLeft+ScaleWidth=300,ScaleTop+ScaleHeight=-200。窗体。窗体Form1的左上角坐标为的左上角坐标为(-300,200),右下角坐标为,右下角坐标为(300,-200)。X轴的正向向右,轴的正向向右,Y
12、轴的正向向上。窗体轴的正向向上。窗体Form1的用户自定义坐标系如图所示的用户自定义坐标系如图所示:11.1 图形操作基础图形操作基础 方法二:采用方法二:采用Scale方法。方法。Scale方法是建立用户自定义坐标方法是建立用户自定义坐标系最方便的方法,语法如下:系最方便的方法,语法如下:Object.Scale(X1,Y1)-(X2,Y2)其中:其中:Object:窗体、图片框、打印机等支持:窗体、图片框、打印机等支持Scale方法的对象名,方法的对象名,可选项,缺省时,则为带有焦点的窗体对象;可选项,缺省时,则为带有焦点的窗体对象;(X1,Y1):新坐标系中,对象左上角坐标值,可选项;:
13、新坐标系中,对象左上角坐标值,可选项;(X2,Y2):新坐标系中,对象右下角坐标值,可选项;:新坐标系中,对象右下角坐标值,可选项;VB根据给定的坐标参数计算出根据给定的坐标参数计算出ScaleTop、ScaleLeft、ScaleHeight、ScaleWidth的值:的值:ScaleLeft=X1 ScaleTop=Y1ScaleWidth=X2-X1 ScaleHeight=Y2-Y111.1 图形操作基础图形操作基础 如果如果Scale方法不带任何参数(省掉方法不带任何参数(省掉(X1,Y1)、(X2,Y2)选项),选项),则取消用户自定义坐标系,而采用缺省坐标系。则取消用户自定义坐标
14、系,而采用缺省坐标系。提示:设置提示:设置ScaleWidth、ScaleHeight、ScaleTop、ScaleLeft或调用或调用Scale方法,均会把方法,均会把ScaleMode复位为复位为0(用(用户定义),所以不必显式设置户定义),所以不必显式设置ScaleMode属性属性【例例11-2】本例运用本例运用Scale方法重新定义窗体方法重新定义窗体Form1的坐标系。的坐标系。在窗体上建立两个命令按钮在窗体上建立两个命令按钮Command1、Command2,标题,标题分别设置为分别设置为“显示缺省坐标系显示缺省坐标系”、“显示用户定义缺省坐标显示用户定义缺省坐标系系”。单击。单击
15、Command1按钮,显示窗体的缺省坐标系,单击按钮,显示窗体的缺省坐标系,单击Command2按钮,显示窗体的用户自定义坐标系,并演示用按钮,显示窗体的用户自定义坐标系,并演示用Scale方法改变坐标系后产生的影响。方法改变坐标系后产生的影响。Line(0,0)-(490,490)表表示从坐标原点到示从坐标原点到(490,490)画一条直线。画一条直线。11.1 图形操作基础图形操作基础“显示缺省坐标系显示缺省坐标系”按钮按钮Click事件过程:事件过程:Private Sub Command1_Click()ClsForm1.Scale 取消用户自定义坐标系,而采用缺省坐标系取消用户自定义
16、坐标系,而采用缺省坐标系Line(0,0)-(4300,0)画画X轴轴Line(0,0)-(0,2800)画画Y轴轴CurrentX=40:CurrentY=10:Print O 标记坐标原点标记坐标原点CurrentX=4200:CurrentY=10:Print X 标记标记X轴轴CurrentX=40:CurrentY=2700:Print Y 标记标记Y轴轴Line(0,0)-(490,490)从坐标原点到从坐标原点到(490,490)画一条直线画一条直线End Sub11.1 图形操作基础图形操作基础“显示用户定义缺省坐标系显示用户定义缺省坐标系”按钮按钮Click事件过程:事件过程
17、:Private Sub Command2_Click()ClsForm1.Scale(-500,500)-(500,-500)Line(-490,0)-(490,0)画画X轴轴Line(0,490)-(0,-490)画画Y轴轴CurrentX=10:CurrentY=-10:Print O 标记坐标原点标记坐标原点CurrentX=480:CurrentY=-10:Print X 标记标记X轴轴CurrentX=10:CurrentY=490:Print Y 标记标记Y轴轴Line(0,0)-(490,490)从坐标原点到从坐标原点到(490,490)画一条直线画一条直线End Sub11.
18、1 图形操作基础图形操作基础 程序运行后,单击程序运行后,单击Command1,结果如图,结果如图11-3中左图所示,中左图所示,单击单击Command2,结果如图,结果如图11-3中右图所示。中右图所示。11.1 图形操作基础图形操作基础 有时需要在不改变容器坐标系的情况下,应用另一种度量单位表有时需要在不改变容器坐标系的情况下,应用另一种度量单位表示控件的尺寸。例如,窗体坐标系的度量单位为像素,要在其上示控件的尺寸。例如,窗体坐标系的度量单位为像素,要在其上放置一个放置一个3.5cm2cm的控件(如图片框)。首先要计算的控件(如图片框)。首先要计算3.5cm2cm是多少像素,然后将计算所得
19、的值赋给控件的是多少像素,然后将计算所得的值赋给控件的Width和和Height属性。可以用转换度量单位的方法属性。可以用转换度量单位的方法ScaleX和和ScaleY进行任意转换。语法格式如下:进行任意转换。语法格式如下:Object.ScaleX(value,fromScale,toScale)Object.ScaleY(value,fromScale,toScale)其中,其中,Object是容器类对象;是容器类对象;value是容器中控件的宽和高;是容器中控件的宽和高;fromScale是控件所用的度量单位;是控件所用的度量单位;toScale是容器坐标系所用是容器坐标系所用的度量单位
20、。那么上例中,图片框的宽和高的取值是:的度量单位。那么上例中,图片框的宽和高的取值是:Picture1.Width=Form1.ScaleX(3.5,vbCentimeters,vbPixels)Picture1.Height=Form1.ScaleX(2,vbCentimeters,vbPixels)11.1 图形操作基础图形操作基础“显示用户定义缺省坐标系显示用户定义缺省坐标系”按钮按钮Click事件过程:事件过程:Private Sub Command2_Click()ClsForm1.Scale(-500,500)-(500,-500)Line(-490,0)-(490,0)画画X轴轴
21、Line(0,490)-(0,-490)画画Y轴轴CurrentX=10:CurrentY=-10:Print O 标记坐标原点标记坐标原点CurrentX=480:CurrentY=-10:Print X 标记标记X轴轴CurrentX=10:CurrentY=490:Print Y 标记标记Y轴轴Line(0,0)-(490,490)从坐标原点到从坐标原点到(490,490)画一条直线画一条直线End Sub 11.2 绘图属性绘图属性窗体、图片框或打印机的窗体、图片框或打印机的DrawWidth属性给出这些对象上所属性给出这些对象上所画线的宽度或点的大小。画线的宽度或点的大小。DrawW
22、idth属性以像素为单位来度属性以像素为单位来度量,最小值为量,最小值为1。使用格式如下:。使用格式如下:Object.DrawWidth=属性值属性值其中,属性值的取值范围为其中,属性值的取值范围为 1 32767之间的整数,单位为之间的整数,单位为像素。缺省值为像素。缺省值为 1,即一个像素宽。,即一个像素宽。DrawWidth属性的不同属性的不同取值对于取值对于Line方法的作用效果如图方法的作用效果如图11-9所示。所示。11.2 绘图属性绘图属性 图图11-9 DrawWidth属性的作用效果属性的作用效果如果使用如果使用Line控件、控件、Shape控件,则通过控件,则通过Bord
23、erWidth属属性定义线的宽度或点的大小,它的取值范围为性定义线的宽度或点的大小,它的取值范围为18192。11.2 绘图属性绘图属性 表表11-4 DrawStyle属性设置属性设置DrawStyle属性给出在窗体、图片框或打印机上所画线的形状,属性给出在窗体、图片框或打印机上所画线的形状,使用格式如下:使用格式如下:Object.DrawStyle=属性值属性值该属性取值及其对应的说明如表该属性取值及其对应的说明如表11-4中所列。中所列。11.2 绘图属性绘图属性【例【例11-5】本例说明】本例说明DrawWidth属性取值对属性取值对DrawStyle属性取属性取值的影响。在窗体上放
24、置一个图片框数组值的影响。在窗体上放置一个图片框数组Picture1,在,在Picture1(0)、)、Picture1(1)中分别显示不同的)中分别显示不同的DrawWidth属性和属性和DrawStyle属性设置所绘制的不同样式的直属性设置所绘制的不同样式的直线段。线段。11.2 绘图属性绘图属性 在窗体的在窗体的Click事件过程中加入代码如下:事件过程中加入代码如下:Private Sub Form_Click()Dim i As Integer 定义代表定义代表DrawStyle属性的变量属性的变量For i=0 To 6Form1.Picture1(0).DrawWidth=1 线
25、宽为线宽为1Form1.Picture1(0).DrawStyle=i 设定设定DrawStyle属性值属性值Form1.Picture1(0).Line(50,(i+1)*450)-(1500,(i+1)*450)Form1.Picture1(0).Print Spc(2);iForm1.Picture1(1).DrawWidth=3 线宽为线宽为3Form1.Picture1(1).DrawStyle=i 设定设定DrawStyle属性值属性值Form1.Picture1(1).Line(50,(i+1)*450)-(1500,(i+1)*450)Form1.Picture1(1).Pri
26、nt Spc(2);iNext iEnd Sub11.2 绘图属性绘图属性 上述事件上述事件过程的流过程的流程图如图程图如图所示:所示:开始结束Dim i As Integer i=0Form1.Picture1(0).DrawWidth=1Form1.Picture1(0).DrawStyle=iForm1.Picture1(0).Line(50,(i+1)*450)-(1500,(i+1)*450)Form1.Picture1(0).Print Spc(2);iForm1.Picture1(1).DrawWidth=3Form1.Picture1(1).DrawStyle=i Form1.
27、Picture1(1).Line(50,(i+1)*450)-(1500,(i+1)*450)Form1.Picture1(1).Print Spc(2);ii=6Ti=i+1F11.2 绘图属性绘图属性 程序运行结果如图所示:程序运行结果如图所示:11.2 绘图属性绘图属性 如果使用如果使用Line控件、控件、Shape控件,则可通过控件,则可通过BorderStyle属属性给出所画线的形状。性给出所画线的形状。BorderStyle属性取值及其对应的说属性取值及其对应的说明如表明如表11-5中所列。中所列。表表11-5 BorderStyle属性设置属性设置11.2 绘图属性绘图属性 封闭
28、图形(主要是圆、椭圆及矩形等)的填充方式由封闭图形(主要是圆、椭圆及矩形等)的填充方式由FillColor,FillStyle这两个属性决定。这两个属性决定。FillColor属性指定填充图案的颜色,编程时可以利用属性指定填充图案的颜色,编程时可以利用11.3节节中提到的任意一种颜色设定方式来给该属性赋值,缺省情况中提到的任意一种颜色设定方式来给该属性赋值,缺省情况下,下,FillColor 设置为设置为 0(黑色)。(黑色)。FillStyle属性指定填充的图案,其取值及其对应的说明如表属性指定填充的图案,其取值及其对应的说明如表11-6中所列。中所列。表表11-6 FillStyle属性设
29、置属性设置11.2 绘图属性绘图属性 注意:注意:(1)当)当FillStyle 属性设置设置为属性设置设置为1(缺省值,透明填充)时,(缺省值,透明填充)时,FillColor属性将被忽略。属性将被忽略。(2)对于窗体和图片框对象,)对于窗体和图片框对象,FillStyle 属性设置后,并不能属性设置后,并不能看到其填充效果,而只能在使用看到其填充效果,而只能在使用Line和和Circle图形方法生成圆图形方法生成圆和方框时,在圆和方框中显示其填充效果。和方框时,在圆和方框中显示其填充效果。下图给出了不同的下图给出了不同的FillStyle属性值所对应的填充样式结果。属性值所对应的填充样式结
30、果。11.3 图形控件图形控件为了在为了在VB应用程序中创作图形效果,应用程序中创作图形效果,VB提供了提供了4种图形控件以种图形控件以简化与图形有关的操作,它们是:简化与图形有关的操作,它们是:PictureBox(图片框)控件、(图片框)控件、Image(图像框)控件、(图像框)控件、Line(线条)控件和(线条)控件和Shape(形状)控(形状)控件。每个控件都适用于一个特定的目的。在设计时,图形控件需件。每个控件都适用于一个特定的目的。在设计时,图形控件需要的系统资源比其他要的系统资源比其他VB控件少。使用图形控件创建的图形使用控件少。使用图形控件创建的图形使用的代码比图形方法用的要少
31、。的代码比图形方法用的要少。11.3 图形控件图形控件VB提供的图片框和图像框可以显示位图、图标、图元文件中的提供的图片框和图像框可以显示位图、图标、图元文件中的图形,也可以处理图形,也可以处理GIF和和JPEG格式的图形文件。格式的图形文件。位图(位图(bitmap)是将图像定义为像素的图案。位图文件的扩展)是将图像定义为像素的图案。位图文件的扩展名是名是bmp或或 dib。图标图标(icon)是特殊类型的位图。图标的最大尺寸为是特殊类型的位图。图标的最大尺寸为3232像素,像素,图标文件的扩展名是图标文件的扩展名是ico。图元文件图元文件(metafile)将图形定义为编码的线段和图形。图
32、元文件将图形定义为编码的线段和图形。图元文件的类型有两种:标准型和增强型,标准型图元文件的扩展名是的类型有两种:标准型和增强型,标准型图元文件的扩展名是wmf,增强型图元文件的扩展名是,增强型图元文件的扩展名是emf。VB只能加载与只能加载与Windows兼容的图元文件。兼容的图元文件。GIF文件:最初是由文件:最初是由CompuServe开发的一种压缩位图格式。它开发的一种压缩位图格式。它可支持多达可支持多达 256 种颜色,是种颜色,是 Internet 上一种流行的文件格式。上一种流行的文件格式。JPEG文件:文件:JPEG是一种支持是一种支持 8 位和位和 24 位颜色的压缩位图格位颜
33、色的压缩位图格式。它也是式。它也是 Internet 上一种流行的文件格式。上一种流行的文件格式。11.3 图形控件图形控件PictureBox控件的主要作用是为用户显示图片,也可作为其他控件的主要作用是为用户显示图片,也可作为其他控件的容器。控件的容器。PictureBox控件的常用属性有:控件的常用属性有:(1)CurrentX、CurrentY属性:返回或设置下一次打印或绘属性:返回或设置下一次打印或绘图方法的水平(图方法的水平(CurrentX)或垂直()或垂直(CurrentY)坐标。)坐标。(2)BorderStyle属性:返回或设置控件的边框样式。设置值属性:返回或设置控件的边框
34、样式。设置值0,无边框;设置值无边框;设置值1,固定单边框(默认值)。,固定单边框(默认值)。11.3 图形控件图形控件(3)Picture属性:返回或设置控件中要显示的图片。属性:返回或设置控件中要显示的图片。Picture属性设置为被显示的图片文件名。该属性既可以在程序设属性设置为被显示的图片文件名。该属性既可以在程序设计阶段通过属性窗口设置,也可以在程序运行时通过代码设置。在计阶段通过属性窗口设置,也可以在程序运行时通过代码设置。在代码中是使用代码中是使用LoadPicture()在图片框中装入图形。其格式为:()在图片框中装入图形。其格式为:Object.Picture=LoadPic
35、ture(filename)其中:其中:Object:可以是要加载图形的图片框、图像框或窗体的名称:可以是要加载图形的图片框、图像框或窗体的名称filename:字符串表达式,指定一个被显示的图形文件名,可以包:字符串表达式,指定一个被显示的图形文件名,可以包括文件的盘符和路径。如果未指定文件名,执行语句后将清除图片括文件的盘符和路径。如果未指定文件名,执行语句后将清除图片框中的图形。框中的图形。例如:下面的语句在图片框例如:下面的语句在图片框Picture1中装入图形:中装入图形:Picture1.picture=LoadPicture(d:VB60ImagesFlower.bmp)11.3
36、 图形控件图形控件(4)AutoSize属性:指定属性:指定PictureBox控件是否自动改变大小,以控件是否自动改变大小,以适应图形的大小。属性值为适应图形的大小。属性值为True或或False,缺省值为,缺省值为False。PictureBox控件不提供滚动条,也不能伸展被装入的图形以适应控控件不提供滚动条,也不能伸展被装入的图形以适应控件尺寸,但可以用该属性调整图片框尺寸以适应图形的大小。当件尺寸,但可以用该属性调整图片框尺寸以适应图形的大小。当AutoSize属性设置为属性设置为True时,图片框能自动调整大小与显示的图时,图片框能自动调整大小与显示的图片匹配。如果将片匹配。如果将A
37、utoSize属性设置为属性设置为False,则图片框不能自动改,则图片框不能自动改变大小来适应其中的图形,加载到图片框中的图形保持其原始尺寸,变大小来适应其中的图形,加载到图片框中的图形保持其原始尺寸,这意味着如果图形比控件大,则超过的部分将被裁剪掉。这意味着如果图形比控件大,则超过的部分将被裁剪掉。PictureBox控件也可作为其他控件的容器。可以在控件也可作为其他控件的容器。可以在PictureBox控控件上面加上文本和其他控件,这些控件随件上面加上文本和其他控件,这些控件随PictureBox移动而移动,移动而移动,其其Top和和Left属性是相对属性是相对PictureBox而言,
38、而与窗体无关。当而言,而与窗体无关。当PictureBox大小改变时,这些控件在大小改变时,这些控件在PictureBox控件中的相对位控件中的相对位置保持不变。置保持不变。11.3 图形控件图形控件【例例11-7】本例说明图片框在本例说明图片框在AutoSize属性不同取值时的状态属性不同取值时的状态和用和用Picture属性加载、清除图形的功能。程序运行界面如图属性加载、清除图形的功能。程序运行界面如图11-18所示。所示。(a)图片框AutoSize属性为False (b)图片框AutoSize属性为True 图11-18 图片框AutoSize属性演示 11.3 图形控件图形控件在窗体
39、上放置一个图片框、一个复选框、两个命令按钮。复选框在窗体上放置一个图片框、一个复选框、两个命令按钮。复选框的标题为的标题为“AutoSize”,两个命令按钮的标题分别为,两个命令按钮的标题分别为“清除清除”、“加加载载”。单击复选框。单击复选框“AutoSize”,图片框的,图片框的AutoSize根据根据Check1.Value属性值设置。当属性值设置。当AutoSize属性设置为属性设置为True时,图时,图片框自动缩小到图片的大小。片框自动缩小到图片的大小。在窗体的在窗体的Load事件过程中设置图片框属性并加载图形。事件过程中设置图片框属性并加载图形。Private Sub Form_L
40、oad()ChDrive App.PathChDir App.PathPicture1.AutoSize=FalseCommand2_Click 调用过程调用过程Command2_Click,加载图形,加载图形End Sub 11.3 图形控件图形控件在在Check1_Click事件过程中设置图片框尺寸宽事件过程中设置图片框尺寸宽2300,高,高1800,AutoSize属性值根据属性值根据Check1.Value属性值设置。属性值设置。Private Sub Check1_Click()Picture1.Width=2300Picture1.Height=1800Picture1.AutoS
41、ize=Check1.ValueIf Check1.Value ThenForm1.Caption=图片框图片框AutoSize属性为属性为TrueElseForm1.Caption=图片框图片框AutoSize属性为属性为FalseEnd IfEnd Sub 11.3 图形控件图形控件上述事件过程的上述事件过程的流程图如图所示流程图如图所示:开始结束 Check1.Value TFForm1.Caption=“图片框AutoSize属性为True Picture1.Width=2300Picture1.Height=1800Picture1.AutoSize=Check1.ValueForm
42、1.Caption=“图片框AutoSize属性为False 11.3 图形控件图形控件单击单击“清除清除”按钮,图形被清除。按钮,图形被清除。Private Sub Command1_Click()Picture1.Picture=LoadPicture()清除清除Picture1中图形中图形End Sub单击单击“加载加载”按钮,图形重新显示。按钮,图形重新显示。Private Sub Command2_Click()Picture1.Picture=LoadPicture(Hello.GIF)往往Picture1中中加载图形加载图形确保图形文件确保图形文件Hello.GIF和此应用程序在
43、同一目录下,也可使用和此应用程序在同一目录下,也可使用其他图形文件其他图形文件End Sub 11.3 图形控件图形控件Image控件一般用于显示图形。它使用较少的系统资源,重控件一般用于显示图形。它使用较少的系统资源,重画起来比画起来比PictureBox控件要快。但它只支持控件要快。但它只支持PictureBox控件控件的一部分属性、事件和方法。的一部分属性、事件和方法。Image控件没有控件没有AutoSize属性,它使用属性,它使用Stretch属性来确定属性来确定是否缩放图形来适应控件大小。是否缩放图形来适应控件大小。Stretch属性设置为属性设置为False时,时,图像框可自动改
44、变大小以适应其中的图形,此值为缺省值。图像框可自动改变大小以适应其中的图形,此值为缺省值。Stretch属性设置为属性设置为True时,时,图形可自动调整尺寸以适应图图形可自动调整尺寸以适应图像框的大小,此值可能会使显示的图形变形失真。像框的大小,此值可能会使显示的图形变形失真。11.3 图形控件图形控件【例例11-8】本例说明图像框在本例说明图像框在Stretch属性不同取值时的状态。属性不同取值时的状态。在窗体上放置一个图片框、四个命令按钮。其中两个命令按在窗体上放置一个图片框、四个命令按钮。其中两个命令按钮实现设定图像框的钮实现设定图像框的stretch属性值为属性值为True或或Fal
45、se;另外两;另外两个命令按钮用来放大、缩小图像框,以演示个命令按钮用来放大、缩小图像框,以演示stretch属性值为属性值为True时图形随图像框缩放,如图时图形随图像框缩放,如图11-20所示。所示。11.3 图形控件图形控件 (a)Strech属性为false(b)Strech属性为 True 并放大时(c)Strech属性为 True并缩小时 图11-20 图像框Strech属性演示11.3 图形控件图形控件程序代码如下:程序代码如下:Private Sub Form_Load()在启动程序时,设置图像框属性并在启动程序时,设置图像框属性并加载图形。加载图形。ChDrive App.P
46、ath ChDir App.Path Image1.Picture=LoadPicture(fly.gif)End SubPrivate Sub Command1_Click()False按钮按钮Click事件过程事件过程 Image1.Stretch=FalseEnd SubPrivate Sub Command2_Click()True按钮按钮Click事件过程事件过程 Image1.Stretch=TrueEnd Sub 11.3 图形控件图形控件Private Sub Command3_Click()放大放大按钮按钮Click事件过程事件过程 Image1.Width=Image1.W
47、idth*2 Image1.Height=Image1.Height*2 把把Image1的宽度和高度值乘的宽度和高度值乘2再赋给其再赋给其Width、Height属性属性End SubPrivate Sub Command4_Click()缩小缩小按钮按钮Click事件过程事件过程 Image1.Width=Image1.Width/2 Image1.Height=Image1.Height/2End Sub 11.3 图形控件图形控件虽然图像框与图片框的用法基本相同,但也有不少区别:虽然图像框与图片框的用法基本相同,但也有不少区别:(1)图像框比图片框占用的内存少,显示图形的速度快。)图像
48、框比图片框占用的内存少,显示图形的速度快。(2)图像框可以实现图形的缩放。)图像框可以实现图形的缩放。(3)图像框不能同图片框一样通过)图像框不能同图片框一样通过Print方法显示文本或使用方法显示文本或使用显示图形方法输出图形。因此,无法实现运行时的画图功能。显示图形方法输出图形。因此,无法实现运行时的画图功能。(4)图像框不能像图片框一样来作为其他控件的容器。)图像框不能像图片框一样来作为其他控件的容器。11.3 图形控件图形控件对于绘制或装载在窗体、图片框和图像框中的图形,可以使用对于绘制或装载在窗体、图片框和图像框中的图形,可以使用SavePicture命令把图形保存到磁盘文件内。该命
49、令的使用格式如命令把图形保存到磁盘文件内。该命令的使用格式如下:下:SavePicture Object.Picture filename或或SavePicture Object.Image filename其中,其中,Object为选定的窗体、图片框或图像框的控件名;为选定的窗体、图片框或图像框的控件名;filename为保存图形的文件名称。例如,将图片框为保存图形的文件名称。例如,将图片框Picture1中的中的图形保存到一个名为图形保存到一个名为pic1.bmp的文件中可用如下语句:的文件中可用如下语句:SavePicture Picture1.Picture,pic1.bmp 11.3
50、 图形控件图形控件Picture和和Image属性都可以保存图形,但两者是有区别的。属性都可以保存图形,但两者是有区别的。无论在设计时还是在运行时图形从文件加载到对象的无论在设计时还是在运行时图形从文件加载到对象的Picture属属性,而且图形是位图、图标、元文件或增强元文件,则以原始性,而且图形是位图、图标、元文件或增强元文件,则以原始文件同样的格式保存。如果它是文件同样的格式保存。如果它是GIF或或JPEG文件,则保存为位文件,则保存为位图文件。图文件。Image属性中的图形总是以位图的格式保存而不管其属性中的图形总是以位图的格式保存而不管其原始格式。原始格式。更重要的区别在于,更重要的区