资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,*,12.1 VB,坐标系统,12.2,图形控件,12.3,图形方法,12.4,绘图应用,第,12,章 图形操作,12.1 VB,坐标系统,在,VB,中,每个对象定位于存放它的容器,例如,窗体处于屏幕内,屏幕是窗体的容器,在窗体内绘制控件,窗体就是控件的容器。每个容器都有一个坐标系,它里面的每一个点可用一对坐标(,X,,,Y,)表示,但采用的坐标系统不同,同一绘图区域的坐标刻度范围以及同一位置的坐标刻度,X,Y,也不一样。,VB,提供两类坐标系:默认坐标系、自定义坐标系。,12.1.1,默认坐标系,VB,中,每个对象容器(屏幕、窗体、图片框、框架等)都有一个默认坐标系,其特点是:原点(,0,,,0,)定位在对象容器用户区的左上角,,X,轴向右、,Y,轴向下为正方向。下图是窗体作为控件的容器时的默认坐标系:,默认坐标系中,属性,ScaleTop,和,ScaleLeft,用于控制容器对象左边和顶端的坐标,根据这两个属性值可形成坐标系原点。所有对象的,ScaleTop,、,ScaleLeft,属性的默认值均为,0,。,属性,Height,和,Width,确定容器对象高度和宽度。,属性,ScaleHeight,和,ScaleWidth,确定对象内部水平方向和垂直方向的单元数。,属性,ScaleMode,决定对象坐标度量单位,共有,8,种单位,,ScaleMode,属性默认为,twip,,,ScaleMode,属性设置如下表所示。,12.1.1,默认坐标系,属性值,单 位,属性值,单 位,0,用户自定义(,User,),4,字符,1,twip(,默认值,),5,英寸(,inch,),2,磅(,point,,每英寸,72,磅),6,毫米(,millimeter,),3,像素(,pixed,),7,厘米(,centimeter,),12.1.2,自定义坐标系,在图形操作中可通过下面方法定制窗体、图片框等对象的坐标系,包括改变坐标原点的位置、改变,X,轴及,Y,轴的正向、改变坐标单位等。,修改属性值,:,当容器对象的,ScaleMode,属性设置为,0,时,允许自定义坐标系统。此时程序设汁者可通过设置对象的四个属性,ScaleWidth,、,ScaleHeight,、,ScaleLeft,、,ScaleTop,来定义合适的坐标系。对象左上角坐标为(,ScaleTop,ScaleLeft,),右下角坐标为(,ScaleLeft+ScaleWidth,,,ScaleTop+ScaleHeight,)。,例如,设置窗体,Form1,的四项属性为:,Form1.ScaleLeft=-200 Form1.ScaleTop=250,Form1.ScaleWidth=500 Form1.ScaleHeight=-400,Scale,方法,:Scale,方法可重新定义窗体、图片框、打印机等对象的坐标系。语法格式为:,对象名,.Scale(X1,Y1),(X2,Y2),其中:对象名可以是窗体、图片框或打印机。如果缺省对象名,默认为带有焦点的窗体对象。(,X1,,,Y1,)是对象用户区左上角的新坐标,(,X2,,,Y2,)是对象用户区右下角的新坐标。缺省时恢复默认坐标系。,执行了,Scale,方法后,,VB,根据给定的坐标参数自动计算出新的,ScaleLeft,、,ScaleTop,、,ScaleWidth,、,ScaleHeight,属性值:,ScaleLeft=X1,ScaleTop=Y1,ScaleWidth=X2,X1,ScaleHeight,=Y2,Y1,所以,通过设置(,X1,,,Y1,)、(,X2,,,Y2,)可改变坐标单位。,12.1.2,自定义坐标系,12.2,图形控件,图形控件包括直线控件(,Line,)和形状控件(,Shape,),它们是,VB,提供的两种标准控件,利用它们可在窗体、图片框、框架等绘图对象上快速直接地绘制各种简单的线条及形状。定制控件,MSChart,可在窗体上绘制图表,支持真正的三维显示。本节简单介绍这三个控件的使用。,12.2.1 Line,控件,Line,控件用于在窗体、图片框和框架中直接画直线或斜线,直线的长短、位置、颜色、形状等由其属性决定。直线的主要属性如下表所示:,直线的属性既可以在设计时通过属性窗口来设置,也可以在程序运行的时候动态的改变直线的各种属性。例如在运行时修改直线的宽度:,Line.BorderWidth=3,属性名,属性含义,X1,Y1,设置或返回直线的起点坐标,X2,Y2,设置或返回直线的终点坐标,BorderStyle,设置直线的样式,BorderWidth,设置或返回直线的宽度,BorderColor,用于设置或返回直线的颜色,12.2.2 Shape,控件,Shape,控件可在绘图对象上绘制矩形、正方形、椭圆、圆、圆角矩形以及圆角正方形等几何图形。在设计阶段将该控件加到窗体、图片框或框架中后,即显示为一个几何图形,图形的形状、颜色、形态等由其属性决定,,Shape,控件的几个主要属性如下表所示:,属性名,属性含义,Shape,用于设置控件的形状,BackStyle,决定图形内是否透明,透明时,BackColor,属性无效,BackColor,设置或返回图形内部的颜色,BorderStyle,设置边界线的样式,BorderWidth,设置边界线的宽度,FillStyle,设置图形内部的填充样式,FillColor,设置或返回图形内部填充内容的颜色,例,用,Shape,控件的,Shape,属性显示,Shape,控件的,6,种形状,并填充不同的图案,如图所示:,采用,Shape,控件数组,程序如下:,Private Sub Form_Activate(),Dim i As Integer,Shape1(0).Shape=0,Shape1(0).FillStyle=2,For i=1 To 5,Shape1(i).Left=Shape1(i-1).Left+750,Shape1(i).Shape=i,Shape1(i).FillStyle=i+2,Shape1(i).Visible=True,Next i,End Sub,12.2.2 Shape,控件,12.2.3 MSChart,控件,MSChart,控件可用于绘制各种图表,支持真正的三维显示,支持所有主要的图表类型。值和数据点可以条形图、折线图、标记图、填充区域图、饼图等形式显示。图表还具有标题、背景、图例、图形和脚注。,MSChart,是定制控件,文件名为,MSCHART20.OCX,,部件名为,Microsoft Chart Control6.0,,使用时先添加到工具箱中。,MSChart,控件的,“,属性页,”,如下图所示:,MSChart,控件的主要属性有:,ChartData,:设置或返回一个值,该值确定一个矩阵的内容是否直接加载到图表的数据格子中,或当图表要求数据时是否返回一个矩阵。,ColumnCount,:用于设置或返回数据网格的列数。,RowCount,:用于设置或返回数据网格的行数。,Column,:用于设置或返回数据网格的当前列。,Row,:用于设置或返回数据网格的当前行。,Data,:用于设置或返回数据网格中由,Column,和,Row,标识的指定数据点的值。,ColumnLabel,:设置或返回,Column,属性指定列的列标题。图表中每一列都有默认的列标题,第,i,列的默认列标题为,Ci,。,RowLabel,:设置或返回,Row,属性指定行的行标题。默认行标题为,Ri,。,ShowLegend,:决定图表中是否显示图例。,ChartType,:设置或返回数据网格中数据的图表类型。,12.2.3 MSChart,控件,【,例,】,用菜单改变下图中的图表的类型。在窗体中添加,“,图表类型,”,菜单,其子菜单标题为各种类型名,所有子菜单包括在一个菜单控件数组中,名称为,TypeItem,。程序代码如下:,Private Sub Form_Load(),MSChart1.ColumnCount=4:MSChart1.RowCount=3,For i=1 To MSChart1.RowCount,MSChart1.Row=i,MSChart1.RowLabel=,数据,&i,For j=1 To MSChart1.ColumnCount,MSChart1.Column=j,MSChart1.ColumnLabel=,系列,&j,MSChart1.Data=i+j,Next j,i,MSChart1.ShowLegend=True,End Sub,(转下页),12.2.3 MSChart,控件,(接上页),Private Sub TypeItem_Click(Index As Integer),Select Case Index,Case 0,1,2,3,4,5,6,7,8,9,MSChart1.chartType=Index,Case 11,MSChart1.chartType=14,Case 12,MSChart1.chartType=16,End Select,End Sub,12.2.3 MSChart,控件,12.3,图形方法,VB,除提供了图形控件外,还提供了多种绘图方法,因而可在绘图对象上完成复杂图形的设计。窗体和图片框都支持图形方法,可用图形方法在这些对象上作出任何你想到的图形。必须注意:绘图方法只能出现在程序代码中,只有当应用程序运行时才能显示出用绘图方法所绘制的图形。,12.3.1 Pset,方法,Pset,方法用于在对象绘图区域的某一指定位置上画点并指定颜色。其语法格式为:,对象名,.Pset Step(x,y),颜色,其中,当颜色参数省略时,缺省颜色为当前绘图对象所设置的前景色;而点的粗细则由绘图对象的,DrawWidth,属性值决定。,Step,表示采用相对坐标,省略,Step,关键字时,,(x,y),为画点的绝对坐标,,x,、,y,为单精度值。,【,例,】,自定义坐标,用,Pset,方法在窗体上画正弦曲线。运行结果如图所示。,程序代码如下:,Private Sub Form_Click(),Const Pi=3.1415926,Dim x As Single,Me.DrawWidth=2 ,设置画笔的粗细,Me.Scale(-2*Pi,2)-(2*Pi,-2),自定义窗体绘图区域的坐标系统,For x=-2*Pi To 2*Pi Step 0.01 ,在窗体上绘图区域绘制点由点组成的正弦曲线,PSet(x,Sin(x),Next x,End Sub,12.3.1 Pset,方法,12.3.2 Line,方法,Line,方法用于在窗体或图片框中画直线或矩形。语法格式为:,对象名,.LineStep(x1,y1),Step(x2,y2),Color,BF,其中:,对象名是指在何对象上画线或矩形,省略时指带焦点的窗体。,(x1,y1),指定所画直线的起点坐标。带有,Step,关键字时表示相对坐标;不带时表示绝对坐标;省略时以对象的,CurrentX,和,CurrentY,属性确定起点坐标。,(x2,y2),指定所画直线终点的相对或绝对坐标。,Color,为画线指定颜色值,省略时用对象的,ForeColor,属性,若省略,Color,而后面还带有选项,则逗号不能省。,若选,B,,则该方法画出以,(x1,y1),、,(x2,y2),为主对角线的矩形。,若选,F,(也必须选,B,),则以画矩形框的颜色填充矩形。,Line,的语法格式也可以简化为以下三种形式:,语法格式一:对象名,.Line,(,xl,,,y1,),(x2,,,y2),,线条颜色,其中:,(xl,,,y1),、,(x2,,,y2),分别为起点、终点的坐标值,语法格式二;对象名,.Line(xl,,,y1),Step(dx,,,dy),,线条颜色,其中:,(x1
展开阅读全文