资源描述
,第,7,章 图形操作,*,掌握建立图形坐标系统的方法;,掌握,Visual Basic,的图形控件和图形方法及其应用;,掌握使用绘图方法绘制简单的二维几何图形。,本章主要任务:,第,7,章 图形操作,本章重点:,本章难点:,容器控件的坐标,及用户自定义坐标系,VB,中坐标系,绘图方法的使用,7.1,图形控件,VB,中与图形有关的控件有:,图片框(,PictureBox,)、,图像框(,Image,),形状控件(,Shape,)、,直线控件(,Line,)。,窗体、图形框和图像框可以显示来自图形文件的图形,1,位图,(bitmap),:,位图通常以,.bmp,或,.dib,为文件扩展名。,2,图标,(icon),:,以,.,ico,为文件扩展名。,3,元文件,(metafile),:,元文件的类型有两种,分别是标准型(,.,wmf,),和增强型(,.,emf,)。,4,JPEG,文件:,JPEG,是一种支持,8,位和,24,位颜色的压缩位图格式。,5,GIF,文件:,GIF,是一种压缩位图格式。它可支持多达,256,种的颜色,是,Internet,上一种流行的文件格式。,主要作用:显示图片、也可作为其他控件的容器。,1,、加载图形:,图形框对象,.Picture=,LoadPicture,(“,图形文件名”,),2,、删除图形,图形框对象,.Picture=,LoadPicture,(),3,保存图片,使用,SavePicture,语句,其使用格式如下:,SavePicture,Object.Picture|Image,FileName,注意:当,Autosize,属性设置为,True,时,图形框能自动调整大小与显示的图片匹配,7.1.1,图片框控件,PictureBox,7.1,图形控件,图像框比图形框占用更少的内存。图像框内不能保存其他控件。,注意:,Image,控件,不是容器控件。,Image,控件加载图片、删除图片、保存图片的方法:,与,PictureBox,控件相同,Stretch,属性:,设置为,False,,,图像框可自动改变大小以适应其中的图形。设设置,True,,,图形可自动调整尺寸以适应图像框的大小。,7.1.2,图像框控件,Image,控件,7.1,图形控件,例,7.1,在窗体上放置,2,个,Image,控件,Image1,和,Image2,在窗体的,Load,事件中编写如下代码:,Private Sub Form_Load(),Image1.Stretch=False ,将,Stretch,属性设置为,False,加载图片,不同计算机系统,图形文件的路径可能不同,Image1.Picture=,LoadPicture(C:WINDOWSBubbles.bmp,),Image2.Stretch=True ,将,Stretch,属性设置为,true,Image2.Picture=,LoadPicture(C:WINDOWSBubbles.bmp,),End Sub,7.1,图形控件,7.1.3,形状控件,Shape,使用,Shape,控件可在窗体、框架或图片框中创建矩形、正方形、椭圆形、圆形、圆角矩形或圆角正方形等图形。,Shape,控件预定义形状是由,Shape,属性,的取值决定的。,Shape,属性取不同值对应的形状,7.1,图形控件,7.1.4,线控件,Line,对于线控件来说,程序运行时最重要的属性是“,X1,”,、“,Y1,”,、“,X2,”,、“,Y2,”,属性,这些属性决定着线显示时的位置坐标,“,X1,”,属性设置(或返回)了线的最左端水平位置坐标,“,Y1,”,属性设置(或返回)了最左端垂直坐标,“,X2,”,、“,Y2,”,则表示右端的坐标。,利用线与形状控件,用户可以迅速地显示简单的线与形状或将之打印输出,与其他大部分控件不同的是,这两种控件不会,响应任何事件,,它们只用来显示或打印。,7.1,图形控件,7.2,坐标系统,7.2.1,缺省坐标系统,每个容器都有一个坐标系,构成一个坐标系,需要三个要素:,坐标原点,、,坐标度量单位,、,坐标轴的长度与方向,。坐标度量单位由容器对象的,ScaleMode,属性决定。缺省时为,Twip,。,每英寸,1440,个,Twip,,,20,个,Twip,为一磅。,7.2.2,用户自定义坐标系统,1,、设置坐标系统的刻度单位,列用户可用,ScaleMode,属性设置坐标系统的刻度单位。,ScaleMode,属性的取值及含义见表,7-3,所示。,7.2,坐标系统,说明:,(,1,)当设置容器对象(例如,窗体或图片框)的,ScaleMode,属性值,0,,将使容器对象的,ScaleLeft,和,ScaleTop,自动设置为,0,,,ScaleHeight,和,ScaleWidth,的度量单位也将发生改变。,(,2,)用,ScaleMode,属性只能改变刻度单位,不能改变坐标原点及坐标轴的方向。,7.2,坐标系统,2,、使用,Scale,属性建立自己的坐标系,(,1,)重新定义坐标原点,属性,ScaleTop,,,ScaleLeft,的值用于控制对象左上角坐标,所有对象的,ScaleTop,,,ScaleLeft,属性的缺省值为,0,,坐标原点在对象的左上角。,=N,,,表示将,X,轴向,Y,轴的负方向平移,N,个单位,ScaleTop,=,N,,,表示,X,轴向,Y,轴的正方向平移,N,个单位,同样,,ScaleLeft,的设置值可向左或向右平移坐标系的,Y,轴。,7.2,坐标系统,7.2.2,用户自定义坐标系统,7.2.2,用户自定义坐标系统,图,7-4,用,ScaleTop,,,ScaleLeft,属性定义坐标原点,例如,将窗体坐标系统的,X,轴,Y,轴的正方向、,Y,轴向,X,轴正方向平移分别平移,m,和,n,单位,结果如图,7-4,所示,(,2,)重定义坐标轴方向和度量单位,属性,ScaleWidth,,,ScaleHeight,的值可确定对象坐标系,X,轴与,Y,轴的正向及最大坐标值。缺省时其值均大于,0,,此时,,X,轴的正向向右,,Y,轴的正向向下。对象右下角坐标值为,(ScaleLeft+ScaleWidth,,,ScaleTop+ScaleHeight,),。,如果,ScaleWidth,的值小于,0,,则,X,轴的正向向左,如果,ScaleHeight,的值小于,0,,则,Y,轴的正向向上。,Y,X,ScaleWidth=n,ScaleHeight=m,Scaleletf,=0,ScaleTop=0,0,(n,m),Y,X,ScaleWidth=n,ScaleHeight=-m,Scaleletf,=0,ScaleTop=0,0,(n,-m),7.2.2,用户自定义坐标系统,例,7.2,将窗体的坐标系统的原点定义在其中心,,X,轴的正向向右,,Y,轴的正向向上,窗体高与宽分别为,200,和,300,单位长度。,通过,ScaleTop,,,ScaleLeft,,,ScaleWidth,和,ScaleHeight,属性实现。,Form1.ScaleLeft=-150,Form1.ScaleTop=100,Form1.ScaleWidth=300,Form1.ScaleHeight=-200,(-150,100),(150,-100),7.2.2,用户自定义坐标系统,(xLeft,yTop),(xRight,yBotton),(,3,)利用,Scale,方法设置坐标系,对象.,Scale(xLeft,yTop)-(xRight,yBottom,),对象的左上角坐标值,对象的右下角坐标值,例如,,Form1.Scale(-150,100)-(150,-100),将建立和,例,7.2,一样的坐标系。,可在程序中使用,Scale,方法改变坐标系统。,当,Scale,方法不带参数时,取消用户定义的坐标系,采用缺省坐标系。,7.2.2,用户自定义坐标系统,7.3,绘图属性,7.3.1,CurrentX,、,CurrentY,属,性,CurrentX,,,CurrentY,属性给出窗体或图形框或打印机在绘图时的当前坐标。,这两个属性在设计阶段不能使用。,使用格式:,object.CurrentX,=x,object.CurrentY=y,注意:当使用某些图形方法后,对象的,CurrentX,和,CurrentY,的设置值将发生变化,其具体的改变,见表,7-5,。,7.3,绘图属性,例,7.3,编程序,当单击窗体时在窗体中的随机位置打印输出,1,个不同颜色(随机确定)的任意大写字母,程序运行界面如图,7-6,所示。,表,7-5,图形方法与当前坐标,方 法,设置,CurrentX,CurrentY,的值,Circle,对象的中心,Cls,0,,,0,Line,线终点,NewPage,0,,,0,Print,下一个打印位置,Pset,画出的点,7.3.2,线宽与线型,1,设置线宽,DrawWidth,属性,窗体、图形框或打印机的,DrawWidth,属性给出这些对象上所画线的宽度或点的大小。使用格式:,Object.DrawWidth,=Size,其中:,Object,为对象表达式,可以是窗体、图片框和打印机对象。,Size,为数值表达式,其范围从,1,到,32767,。该值以像素为单位表示线宽。,缺省值为,1,,即一个像素宽,。,7.3,绘图属性,7.3,绘图属性,窗体或图形框或打印机的,DrawStyle,属性给出这些对象上所画线的形状。其设置值及含义见表,7.6,。,2.,设置线型,DrawStyle,属性,例,7.4,用不同的,DrawStyle,属性值,在窗体分别画一条直线。,内 部 常 数,数 值,描 述,VbSolid,0,(默认值)实线,VbDash,1,虚线,VbDot,2,点线,VbDashDot,3,点划线,VbDashDotDot,4,双点划线,VbInvisible,5,透明线(不可见),VbInsideSolid,6,内收实线,7.3.3,图形的填充,1,填充方式,FillStyle,属性,下图是形状控件的,FillStyle,属性设置为,08,时的填充效果,说明:,(,1,),FillStyle,为,0,是实填充,,1,为透明方式。填充图案的颜色由,FillColor,属性来决定。,(,2,)对于窗体和图片框对象,,FillStyle,属,性设置后,并不能看到其填充效果,而只能在使,用,Circle,和,Line,图形方法生成的圆和方框时,在圆和方框中显示,其填充效果,。,2,FillColor,属性,用于设置填充形状的颜色,缺省情况下,,FillColor,设置为,0,(黑色)。,7.3.4,AutoRedraw,属性,设置和返回对象或控件是否能自动重绘。若值为,True,,使,Form,对象或,PictureBox,控件的自动重绘有效。对象不接受绘制事件(,Paint,事件)。,重绘,:,当,改变对象大小或隐藏在另一个对象后又重新显示的情况下,,重新将以前使用,Print,方法输出的文本信息和绘图方法绘制的图形显示出来。,7.3.3,图形的填充,7.3.5,图形颜色,在,Visual Basic,系统中,所有的颜色属性都由一个,Long,整数表示:,在代码中可使用,4,种方式给颜色赋值:,使用,RGB,函数。,使用,QBColor,函数,选择,16,种,Qbasic,颜色中的一种。,使用系统提供的颜色常数。,直接使用,Long,型颜色值。,7.3,绘图属性,1,、使用,RGB,函数,RGB,函数可返回一个,Long,整数,用来表示一个,RGB,颜色值。其使用格式如下:,RGB(red,green,blue),说明:,red,green,blue(,红、绿、蓝,),3,种颜色,从,0,255,之间的一个亮度值,(0,表示亮度最低,而,255,表示亮度最高,),。,例如:,Form1.BackColor=RGB(
展开阅读全文