1、第十六章 图形操作,坐标系统 绘图属性与事件 图形控件 图形方法,16.1 坐标系统,1 缺省坐标系统 每个容器都有一个坐标系,构成一个坐标系,需要三个要素:坐标原点、坐标度量单位、坐标轴的长度与方向。,原点,1.坐标系统的刻度单位,坐标度量单位由容器对象的ScaleMode属性决定。缺省时为Twip。每英寸1440个Twip,20个Twip为一磅。,1、坐标系统的刻度单位,用户可用ScaleMode属性设置坐标系统的刻度单位。ScaleMode属性的取值及含义见表。,2. 使用Scale属性建立自己的坐标系 (1) 重新定义坐标原点属性ScaleTop,ScaleLeft的值用于控制对象左上
2、角坐标,所有对象的ScaleTop,ScaleLeft属性的缺省值为0,即坐标原点在对象的左上角。= N,表示将X轴向Y轴的负方向平移N个单位ScaleTop= N,表示X轴向Y轴的正方向平移N个单位 同样,ScaleLeft的设置值可向左或向右平移坐标系的Y轴。,(2) 重定义坐标轴方向和度量单位属性ScaleWidth,ScaleHeight的值可确定对象坐标系X轴与Y轴的正向及最大坐标值。缺省时其值均大于0,此时,X轴的正向向右,Y轴的正向向下。对象右下角坐标值为(ScaleLeft+ScaleWidth,ScaleTop+ScaleHeight)。如果ScaleWidth的值小于0,则
3、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),(0,0),300,200,确定下列坐标的原点及scalewidth,scaleheight,Scalewidth=200 Scaleheight=-300 Scaleleft=0 Scaletop=300,(0,0),300,200,确定下列坐标的原点及scalewidt
4、h,scaleheight,可在程序中使用Scale方法改变坐标系统。当Scale方法不带参数时,取消用户定义的坐标系,采用缺省坐标系。,(0,0),Scale(-200,300)-(200,-300) Line (-200, 0)-(200, 0) Line (0, -300)-(0, 300),16.2 绘图属性与事件,1、 当前坐标CurrentX,CurrentY属性给出窗体或图形框或打印机在绘图时的当前坐标。 这两个属性在设计阶段不能使用。 使用格式: object.CurrentX = x object.CurrentY = y,注意:当使用某些图形方法后,对象的CurrentX和
5、CurrentY的设置值将发生变化。,2 线宽与线型 (1)设置线宽DrawWidth 属性窗体、图形框或打印机的DrawWidth属性给出这些对象上所画线的宽度或点的大小。使用格式: Object.DrawWidth = SizeObject: 为对象表达式,可以是窗体、图片框和打印机对象。Size: 为数值表达式,其范围从 1 到 32767。该值以像素为单位表示线宽。缺省值为 1,即一个像素宽。,窗体或图形框或打印机的DrawStyle属性给出这些对象上所画线的形状。,(2) 设置线型DrawStyle 属性,例 用不同的DrawStyle 属性值,在窗体分别画一条直线。,3 图形的填充
6、,(1)填充方式 FillStyle属性,下图是形状控件的FillStyle属性设置为08时的填充效果,说明: (1)FillStyle为0是实填充,1为透明方式。填充图案的颜色由FillColor属性来决定。 (2)对于窗体和图片框对象,FillStyle 属性设置后,并不能看到其填充效果,而只能在使用Circle 和 Line 图形方法生成的圆和方框时,在圆和方框中显示其填充效果。,(2)FillColor属性用于设置填充形状的颜色,缺省情况下,FillColor 设置为 0(黑色)。,4 AutoRedraw属性,设置和返回对象或控件是否能自动重绘。若值为True,使Form对象或Pic
7、tureBox控件的自动重绘有效。对象不接收绘制事件(Paint事件)。,5 图形颜色,在Visual Basic系统中,所有的颜色属性都由一个Long整数表示:,在代码中可使用4种方式给颜色赋值:,使用RGB函数。 使用QBColor函数,选择16种Qbasic颜色中的一种。 使用系统提供的颜色常数。 直接使用Long型颜色值。,一、使用RGB函数RGB函数可返回一个Long整数,用来表示一个RGB颜色值。其使用格式如下: RGB(red, green, blue)说明: red, green, blue3种颜色,从0255之间的一个亮度值(0表示亮度最低,而255表示亮度最高)。 例:Fo
8、rm1.BackColor = RGB(255, 0, 0) 设定背景红色二、使用QBColor函数QBColor函数可返回一个Long值,用来表示所对应颜色值的RGB颜色码。其使用格式如下:QBColor(color)说明: color参数是一个界于015的整型数,分别代表16种颜色。,三、使用系统定义的颜色常数在VB系统中已经预先定义了常用颜色的颜色常数,如常数vbRed就代表红色,vbGreen代表绿色等等。可“对象浏览器”中查询常数列表。,例如,要将窗体的背景色设为红色。则可使用如下语句: Form1.BackColor = vbRed、vbBlue、vbCyan、vbGreen等,四
9、、直接使用颜色设置值用十六进制数指定颜色的格式为: &HBBGGRR 其中,BB指定蓝颜色的值,GG指定绿颜色的值,RR指定红色的值。每个数段都是两位十六进制数,即从00FF。 例如, Form1.BackColor = &HFF0000 它相当于:Form1.BackColor = RGB(0, 0, 255),16.3 图形控件,VB中与图形有关的控件有: 图片框(PictureBox)、图像框(Image) 形状控件(Shape)、直线控件(Line)。,窗体、图形框和图像框可以显示图形文件,1位图(bitmap):位图通常以.bmp或 .dib为文件扩展名。 2图标(icon):以.i
10、co为文件扩展名。 3元文件(metafile):元文件的类型有两种,分别是标准型(.wmf)和增强型(.emf)。 4JPEG文件:JPEG是一种支持 8 位和 24 位颜色的压缩位图格式。它是 Internet 上一种流行的文件格式。5GIF文件:GIF是一种压缩位图格式。它可支持多达 256 种的颜色,是 Internet 上一种流行的文件格式。,主要作用:显示图片、也可作为其他控件的容器。 1、装入图形:图形框对象.Picture = LoadPicture(“图形文件名”) 2、删除图形图形框对象.Picture = LoadPicture( ) 3保存图片 使用SavePictur
11、e语句,其使用格式如下: SavePicture Object.Picture|Image, FileName 注意:当Autosize属性设置为True时,图形框能自动调整大小与显示的图片匹配,一、 图片框控件PictureBox,图像框比图形框占用更少的内存快。图像框内不能保存其他控件。Image控件,不是容器控件。Image控件加载图片、删除图片、保存图片的方法:与PictureBox控件相同 Stretch属性: 设置为False,图像框可自动改变大小以适应其中的图形。设设置True, 图形可自动调整尺寸以适应图像框的大小。,二、 图像框控件Image控件。,三、 形状控件Shape,
12、使用Shape控件可在窗体、框架或图片框中创建矩形、正方形、椭圆形、圆形、圆角矩形或圆角正方形等图形。 Shape控件预定义形状是由Shape属性的取值决定的。,Shape属性取不同值对应的形状,四、 线控件Line,对于线控件来说,程序运行时最重要的属性是“X1”、“Y1”、“X2”、“Y2”属性,这些属性决定着线显示时的位置坐标,“X1”属性设置(或返回)了线的最左端水平位置坐标,“Y1”属性设置(或返回)了最左端垂直坐标,“X2”、“Y2”则表示右端的坐标。,利用线与形状控件,用户可以迅速地显示简单的线与形状或将之打印输出,与其他大部分控件不同的是,这两种控件不会响应任何事件,它们只用来
13、显示或打印。,16.4 绘图方法,1、 Pset方法,Pset方法用于画点,其语法格式如下:对象.Pset Step (X,Y) ,颜色,实例. 绘制函数曲线在窗体上画出,区间的正弦曲线。要求将图片框的坐标系重新定义为左上角坐标为(,1),右下角坐标为(,1),并在窗体上画出坐标的x轴和y轴。,2、 Line方法画直线或矩形:对象. Line Step (x1,y1)(x2,y2),颜色,BF 其中:对象可以是窗体或图形框。(x1,y1) ,(x2,y2)为线段的起终点坐标或矩形的左上角右下坐标。颜色为可选参数,指定画线的颜色,缺省取对象的前景颜色,即ForeColorB表示画矩形,F表示用画
14、矩形的颜色来填充矩形。关键字Step表示采用当前作图位置的相对值,即从当前坐标移动相应的步长后所得的点为画线起点。,注意:各参数可根据实际要求进行取舍,但如果舍去的是中间参数,参数的位置分隔符不能舍去。,例如: 画一条从(250,300)到(400,500)点的直线 Line (250,300)-(400,500) 从当前位置(由CurrentX,CurrentY决定)画到(400,500) Line - (400,500) 相对于(400,500),出发点是(150,250)终点是向X轴正向走150,向Y轴正向走50的点 Line Step(150,250) - (150,50) 等同于:L
15、ine (150,250) - (300,300) 画一个左上角在(20,40),右下角在(150,200)的矩形,注意在color 参数省略时,逗号并不省略。 Line (20,40) - (150,200) , , B 用红色从(20,40)到(70,110)画一个实心的矩形。 Line (20,40) - Step (50,70), RGB(255,0,0), BF,3、 Circle方法 Circle方法用于在指定对象上画圆、椭圆、圆弧和扇形。 格式: 对象. Circle Step (x,y),半径,颜色,起始角,终止角,长短轴比率 其中:(x,y)为圆心坐标,Step表示采用当前作图位置的相对值;圆弧和扇形通过参数起始角,终止角控制。当起始角、终止角取值在0 2时为圆弧,当在起始角、终止角取值前加一负号时,画出扇形,负号表示画圆心到圆弧的径向线;椭圆通过长短轴比率控制,默认值为1,画圆。,Circle方法的使用,用于返回指定点的RGB颜色,其语法格式如下: 对象.Point(x,y) 对象:指容器,它可能是窗体或图形框等,缺省时为当前窗体。(x,y):表示画点的位置。,4. Point方法,例 编程序,当用户在图片框上按下鼠标左键时将窗体的背景色设置为当前鼠标指定坐标点的颜色。,