1、第14章 图形操作线条控件形状控件图片框控件图像控件了解VB坐标系统VB颜色设置VB绘图方法,14.1直线控件和形状控件直线控件及其用途在窗体上画出水平、垂直或斜线图形。相关属性X1、Y1和X2、Y2属性BorderStyle属性BorderWidth属性BorderColor属性一. X1、Y1和X2、Y2属性 X1、Y1和X2、Y2是线条控件画出的直线的位置属性,分别设置或返回直线的起点和终点坐标。单位:twip。设置方法:属性窗口 程序代码,二.BorderStyle属性设置线条的样式。取值:7种不同的线条样式。0-Transparent:透明线条。1-Solid(缺省):实线。2-Da
2、sh:虚线。3-Dot:点线。4-Dash_Dot:点划线。5-Dash_Dot_Dot:双点划线。6-Inside Solid:内部实线。设置方法:属性窗口程序代码:线条控件名.BorderStyle = value,三.BorderWidth属性设置直线的粗细(宽度)。单位:像素(pixel)。缺省值为1。设置方法:属性窗口程序代码:线条控件名.BorderWidth = value四.BorderColor属性设置线的颜色。缺省值:黑色。设置方法:属性窗口,调用“调色板”。程序代码,使用颜色函数:线条控件名.BorderColor = QBColor(value) 线条控件名.Borde
3、rColor = RGB(v1,v2,v3),五.名称属性 设置线条控件的名字。在代码中标识该对象。 缺省值:Line1、Line2等。 实际值:以 lin 为前缀。 例:linLine 设置方法:只能在设计时间设置。事件线条控件不响应任何控件。,形状控件(Shape)用途 使用形状控件在窗体上画出规范的图形, 如:矩形、正方形、园、椭园等。相关属性名称属性Shape属性BorderStyle属性BorderColor属性BorderWidth属性FillColor属性FillStyle属性BackStyle属性BackColor属性,一.名称属性 设置形状控件的名字。在代码中标识该对象。 缺
4、省值:Shape1、Shape2等。 实际值:以 shp 为前缀。 例:shpSquare 设置方法:只能在设计时间设置。二.Shape属性设置形状控件画出的图形形状。 取值:0(缺省):Rectangle(矩形)。1:Square(正方形)。2:Oval(椭园形)。3:Circle(园形)。4:Rounder Rectangle(四角为园弧的矩形)。5:Rounder Square(四角为园弧的正方形)。,设置方法:属性窗口。 程序代码:形状控件名.Shape = value三.BorderStyle属性设置形状控件画出的图形的边框的形状。取值:7种。同“线条控件”的BorderStyle属
5、性。设置方法:同“线条控件”。四.BorderColor属性 设置形状控件所绘图形的边框的颜色。缺省值:黑色。设置方法:同“线条控件”。五.BorderWidth属性设置形状控件边框的宽度。单位:像素(pixel)。缺省值:1。设置方法:同“线条控件”。,六.FillStyle属性设定形状控件边框围起来的内部区域的图案。取值:8种图案。0:实心(Solid)。1(缺省):透明(Tranparent)。2:水平线(Horizontal Line)。3:垂直线(Vertical Line)。4:上对角线(Upward Diagonal)。5:下对角线(Downward Diagonal)。6:交叉
6、线(Cross)。7:对角交叉线(Diagonal Cross)。设置方法:同BorderStyle属性。,七.FillColor属性 设定形状控件边框围起来的内部区域的图 案的颜色。 设置方法:同BorderColor。八.BackStyle属性 设置图形内部是否透明。 取值:0(缺省):透明(Transparent)。 1:不透明(Opaque)。 设置方法:同BorderStyle。九.BackColor属性 设置图形内部的填充颜色。仅当BackStyle=1时。 设置方法:同BorderColor。事件:不响应任何事件。,14.2坐标系统,构成一个坐标系,需要三个要素:坐标原点、坐标度
7、量单位、坐标轴的长度与方向。坐标度量单位由容器对象的ScaleMode属性决定。,表1 ScaleMode属性设置,VB中有两种方法用于坐标系的定义。,方法一:通过对象的ScaleTop、ScaleLeft、ScaleWidth和ScaleHeigh四项属性来实现。它们不仅可以用来设置标度系统,而且可以用于获取当前标度系统的信息。,方法二:采用Scale方法来设置坐标系。该方法是建立用户坐标系最方便的方法,其语法如下:,对象Scale(x1,y1)-(x2,y2),例1本例用窗体内两个命令按钮的单击事件说明用Scale方法改变坐标系统后产生的影响,命令Line(0,0)-(1500,1500)
8、表示从坐标原点到(1500,1500)画一根直线。Private Sub Command1_Click() Cls Form1.Scale 采用缺省坐标系 Line (0, 0)-(1500, 1500)End SubCommandl_Click事件采用缺省坐标系,坐标原点在窗体的左上角,此时,Height=3600,Width4800,ScaleHeight3195,ScaleWidth4680(twip)Private Sub Command2_Click() Cls Form1.Scale (0, 1500)-(1500, 0) 定义用户坐标系 Line (0, 0)-(1500, 15
9、00)End SubCommand2_Click事件定义用户坐标系,坐标原点在窗体的左下角,X轴的正向向左,Y轴的正向向上,窗体的左上角坐标为(0,1500),右下角坐标为(1500,0)。此时,Height=3600,Width=4800,ScaleHeight=-1500,ScaleWidth1500(twip)。程序运行后,单击Commandl,结果如图14.1中左图所示,单击Command2,结果如图14.1中右图所示。,图14.1 改变坐标系产生的影响,14.2.2 设置颜色,1.使用RGB函数 使用RGB函数可以设置上千万种颜色。句法: 对象名.颜色属性 = RGB( red,gr
10、een,blue) 说明:三个参数分别代表红、绿、蓝三种原色的含量,含 量的取值范围为0255。三个参数值的配合,共可以产生256*256*256种颜色。函数返回一个表示颜色的长整型值。 RGB(0,0,0)-黑色,RGB(255,0,0)-红色 RGB(0,255,0)-绿色,RGB(0,0,255)-蓝色 RGB(255,255,255)-白色,RGB(255,255,0)-黄色 RGB(255,0,255)-紫色,RGB(0,255,255)-青色例:Form1.BackColor = RGB(255,255,0) 设为黄色,Visual Basic提供了两个选择颜色函数QBColor和
11、RGB,其中QBColor函数能够选择16种颜色:,表2 QBColor函数可选择的颜色,RGB函数能够选择更多的颜色,此函数有三个参数。语法格式如下:RGB(R,G,B),2.使用QBColor设置颜色,3使用VB颜色常量颜色 颜色常量黑色vbBlack红色vbRed绿色vbGreen蓝色vbBlue浅蓝色vbCyan粉红色vbMagenta黄色vbYellow白色vbWhite使用方法:对象名.颜色属性名 = 颜色常量例:Form1.BackColor = vbYellow,14.3绘图属性和事件,一. CurrentX和CurrentY属性存储所绘图形的终止点的坐标。缺省下,初始属性值为
12、(0,0)。程序运行时,使用不同的绘图方法,属性值所示的终止位置不同:Pset方法:即所绘点的坐标。Line方法:所绘图形的终止点坐标。Circle方法:所绘图形的中心点坐标。,二.DrawWidth和DrawStyle属性DrawWidth属性:设置用绘图方法绘制的线的宽 度,单位:像素(Pixel)。取值:132767; 缺省值为:1。DrawStyle属性:设置用绘图方法绘制的线的类型。取值:0(缺省)-实线。1-虚线。2-点线。3-点划线。4-双点划线。5-透明。6-内部实线。注:只有当DrawWidth=1时, DrawStyle的设置值全部有效。 当DrawWidth1时,Draw
13、Style的设置值14无效,为实线。,三.FillStyle和FillColor属性设置由绘图方法绘制的封闭图形的内部区 域的填充方式和填充颜色。FillStyle属性:设置封闭图形的内部区域的填 充方式。取值:0-实心。4-左斜线。1(缺省)-透明。5-右斜线。2-水平线。6-网状格线。3-垂直线。7-网状斜线。FillColor属性:设置封闭图形的内部区域的填 充颜色。绘图的常用事件为:Paint,14.4图形方法,Line方法,Line方法用来画线,窗体和图片框可用此方法在内部画线。此外,还常用Line方法绘制各种曲线,因为任何曲线都可看作是由无数小线段构成的。Line方法的语法格式为:
14、对象名LineStep(Xl,Yl)-Step(X2,Y2),Color,BF其中,(X1,Y1)和(X2,Y2)为一条线段的起止坐标,(X1,Y1)可以省略,若省略就表示从当前位置开始画到(X2,Y2)点,当前点坐标可用其CurrentX,CurrenttY属性得到,(CurrentX,CurrenttY)为当前点的坐标;step仍是相对意义,加入step后坐标为相对于当前点的坐标;Color用于设置画线的颜色;参数B表示以(X1,Y1)和(X2,Y2)为对角坐标画一方框;加入F表示对矩形框填充。直线的端点坐标表示为控件坐标系中单位。直线的宽度取决于DrawWidth属性,样式取决于Draw
15、Style属性,它的设置与线条控件的Border Style属性设置相同。 如果线宽超过1个像素,则Draw Style属性的有效设置是l和6,因为点划线的线宽不能大于1个像素。,例:绘制线宽大于1个像素的直线时,Visual Basic将线宽分布到指定坐标的两边。如果DrawStyle属性设置为6(内实线),则整个形体(线、框、圆)画在指定坐标内部。本程序代码利用Line方法在一个窗体上画坐标轴与坐标刻度:Dim x As SingleDim y As SinglePrivate Sub Form_Load() Me.ScaleMode = 6 x = Me.ScaleWidth / 2 y
16、 = Me.ScaleHeight / 2End Sub,Private Sub Form_click() AutoRedraw = True Line (x, 0)-(x, Me.ScaleHeight), RGB(255, 0, 0) Line (0, y)-(Me.ScaleWidth, y), RGB(255, 0, 0) CurentX = x - 4 CurentY = y + 0.5 Print 0 For xt = -10 To 10 If xt 0 Then st = xt * 10 CurentX = x + st - 3 CurentY = y + 0.5 Print x
17、t Line (x + st, y - 1)-(x + st, y), RGB(255, 0, 0) End If Next xt For yt = -5 To 7 If yt 0 Then st = yt * 10 CurentX = x - 4 CurentY = y + st - 1 Print yt Line (x, y + st)-(x + 1, y + st), RGB(255, 0, 0) End If Next ytEnd Sub,2. Circle方法,Circle方法用来画圆、椭圆、弧等。它的语法格式如下:对象.CircleStep(x,y),radius,color,st
18、art,end,aspet,例:用Circle方法在窗体上绘制由圆环构成的艺术图案。构造图案的算法为:将一个半径为r的圆周等分为n份,以这n个等分点为圆心,以半径r1绘制n个圆。设定圆的半径为窗体高度的1/4,圆心在窗体的中心,在圆周上等分50份。如图所示。,Private Sub Form_Click() Dim r, x, y, x0, y0, st As Single Cls r = Form1.ScaleHeight / 4 x0 = Form1.ScaleWidth / 2 y0 = Form1.ScaleHeight / 2 st = 3.1415926 / 25 For i = 0 To 6.283185 Step st x = r * Cos(i) + x0 y = r * Sin(i) + y0 Circle (x, y), r * 0.9 Next iEnd Sub,绘制艺术图案,3. Pset方法,Pset方法用于返回指定点的RGB颜色,其语法格式如下:对象.Pset(x,y) ,Color,其中,对象是使用PSet方法的对象名,可以是窗体和图片框;Step为可选参数,加入此参数表明所画的点位于相对当前点的(X,Y)处;(X,Y)为点的位置坐标;Co1or参数可选,用于设置点的颜色。,