资源描述
1,第6章图形控件和图形方法,6.1图形控件6.2VisualBasic坐标系6.3图形方法6.4小结,2,6.1.1图片框控件,工具箱中图片框控件的图标为。图片框控件名称的缺省值为:Picture1、Picture2、,微软建议名称前缀为pic。图片框控件用以显示图片,也可以作为其他对象的容器、显示图形方法的输出结果和Print方法输出的文本。1图片框控件的常用属性(1)Picture属性。图片框控件的Picture属性返回或设置图片框中的图片。在图片框中加载图像有下列两种方式:1)设计时选取:界面设计时,在该图片框控件属性窗口中点击“Picture”属性,随之弹出“加载图片”对话框,选择所要显示的图片文件后,相应的图片被加载到图片框中。2)运行时装入:程序运行时,可用LoadPicture函数装入图片到图片框控件中。格式:图片框控件名.Picture=LoadPicture(filename),3,6.1.1图片框控件,(2)AutoSize属性。AutoSize属性值为True时,图片框的边界会随着所装入图片的大小变化而变化。此时在设计窗体过程中就应特别小心,图片将不考虑窗体上其他控件的分布情况,而根据图片的大小自动调整图片框的大小,可能导致窗体上的其他控件被覆盖,所以应慎用,以免影响窗体界面的完整性。(3)Align属性图片框控件的Align属性值为0:标准位置,图片框在原位置。图片框控件的Align属性值为1,则图片框贴紧到窗体的上边;Align属性值为2,则图片框贴紧到窗体的下边。图片框控件的Align属性值为3,则图片框贴紧到窗体的左边;Align属性值为4,则图片框贴紧到窗体的右边。,4,6.1.1图片框控件,2图片框控件的常用方法(1)Print方法。图片框控件可以用来显示Print方法输出的文本,格式如下:图片框控件名称.Print输出表如执行“Picture1.Print图片框”,则在图片框Picture1上当前输出位置,显示“图片框”这3个字。(2)Cls方法。图片框上除了所装入的图片外,其他的所有文字、图形都可以用Cls方法擦除,格式如下:图片框控件名称.Cls,5,6.1.2影像框控件,工具箱中影像框控件的图标为。影像框控件名称的缺省值为:Image1、Image2、,微软建议名称前缀为img。影像框控件只能用于显示图像,不支持图形方法,也不能当作容器来使用。1影像框控件常用属性(1)Picture属性。与图片框控件的Picture属性一样,可以在设计时设置,也可以在程序运行时用LoadPicture函数装入。详细说明可以参见6.1.1。(2)Stretch属性。图片框控件的AutoSize属性设置为True时,其大小会随所装入的图片而变化,这样可以得到图片的原始大小,但有时当所加载的图片比较大时,可能会影响窗体上其他控件的显示。,6,6.1.2影像框控件,2影像框控件常用事件影像框控件与图片框控件可以响应的事件过程大体相同,如Change、Click、MouseDown、MouseUp、MouseMove等常用事件。读者可以根据程序设计的要求,编写相应的事件过程,下列各程序段可以帮助读者了解鼠标引发事件过程的使用方法。下列事件过程可以显示鼠标在影像框控件上点击位置的坐标值。PrivateSubImage1_MouseDown(ButtonAsInteger,ShiftAsInteger,_XAsSingle,YAsSingle)参数x、y为鼠标在影像框按下处的坐标值。PrintX,YEndSubImage控件可接受Click等事件,因此可以充当图形命令按钮。,7,6.1.3形状控件,工具箱中形状控件的图标为。形状控件缺省的控件名称为:Shape1、Shape2、,微软建议名称前缀为shp。1形状控件常用属性(1)Shape属性。形状控件用于创建指定的图形,通过设置Shape属性来得到所需要的形状,画出正方形、矩形、圆和椭圆等。Shape属性定义该控件显示的图形。取整数值或系统定义的符号常量,取值及含义如下:0或VbShapeRectangle:控件形状为矩形。1或VbShapeSquare:控件形状为正方形。2或VbShapeOval:控件形状为椭圆形。3或VbShapeCircle:控件形状为圆形。4或VbShapeRoundedRectangle:控件形状为圆角矩形。5或VbShapeRoundedSquare:控件形状为圆角正方形。,8,6.1.3形状控件,(2)BorderStyle属性。该属性定义图形边框样式,取值及含义如下:0:透明,即无边框。1:实线,为缺省值。2:长虚线。3:虚线。4:点划线。5:双点划线。6:内插实线,如果BorderWidth属性值大于1,控件保证图形最大尺寸等于设定值。,9,6.1.3形状控件,(3)FillStyle属性。该属性用于指定图形的填充样式。取值及含义如下:0:实心填充1:透明,即不填充,为缺省值。2:水平线填充。3:垂直线填充。4:斜线填充。5:反斜线填充。6:网格填充。7:倾斜网格填充。,10,6.1.3形状控件,(4)其他常用属性。BorderColor:设置边框颜色。FillColor:设置填充颜色。BorderWidth:设置边框宽度。利用形状控件,可以在界面设计时,通过对形状控件有关属性的设置直接得到相应的图形,也可以在程序中设置属性来获得所需要的图形。,11,6.1.4直线控件,工具箱中直线控件的图标为。直线控件缺省的控件名称为:Line1、Line2、,微软建议名称前缀为lin。直线控件与形状控件相似,但只用于画线。界面设计时可以通过鼠标操作调整线段的位置、长短和颜色等属性;程序运行时,可以通过改变直线的端点坐标(x1,y1)、(x2,y2)来移动它或调整它的长短。同形状控件的边框样式属性一样,Line控件通过对BorderStyle属性的设置定义该控件所显示的直线的线形,其不同取值表示不同的线形,分别为透明、实线、长虚线、虚线、点划线、双点划线等。,12,6.2.1容器坐标系,在VisualBasic中,每个容器都有一个坐标系,坐标系中的X轴向右、Y轴向下延伸,如图6-11所示为缺省的窗体坐标系统、框架控件的坐标系统。1控件在容器中的位置属性控件在容器中的位置属性包括Top属性和Left属性。,图6-11VisualBasic坐标系示例,13,6.2.1容器坐标系,(1)Top属性。控件的该属性值是控件左上角到所在容器上边沿的距离。如果控件外的容器为窗体,则控件的Top属性值为控件左上角到所在窗体标题栏下边沿的距离。(2)Left属性。控件的该属性值是控件左上角到所在容器左边沿的距离。PrivateSubForm_Click()PrintTop,Left,Height,WidthPrintFrame1.Top,Frame1.Left,Frame1.Height,Frame1.WidthPrintText1.Top,Text1.Left,Text1.Height,Text1.WidthEndSub,14,6.2.1容器坐标系,2控件自身宽度、高度的属性(1)Width属性,该属性值为控件本身的宽度。(2)Height属性,该属性值为控件本身的高度。在图6-11中,如果拖动框架控件、改变其在窗体中的位置,框架控件的Top、Left属性可以被改变,而Width、Height属性不改变。如果仅改变框架控件的大小而保持其左上角位置不变,则Width、Height属性被改变。3容器(窗体、图片框)的坐标属性(1)ScaleLeft属性,该属性值为容器左上角的横坐标,缺省值为0。(2)ScaleTop属性,该属性值为容器左上角的纵坐标,缺省值为0。(3)ScaleWidth属性,该属性值为容器内部的宽度值。(4)ScaleHeight属性,该属性值为容器内部的高度值(5)CurrentX、CurrentY属性,分别表示当前点在容器内的横坐标、纵坐标。设置CurrentX、CurrentY属性后,所设值就是下一个输出方法的当前位置。,15,6.2.2改变容器坐标系的Scale方法,容器坐标系中,坐标系刻度单位的缺省值为“缇”(1缇0.01764mm),容器的最小坐标值为左上角坐标,容器的最大坐标值为右下角坐标。利用Scale方法可以改变原点的坐标并随之改变最大坐标值,格式为:容器名.Scale(x1,y1)-(x2,y2)该语句功能:改变容器(缺省容器名指窗体)左上角坐标为(x1,y1),右下角坐标值为(x2,y2),将容器在X轴方向分为x2-x1等份、Y轴方向分为y2-y1等份,并将容器的4个坐标属性设置为:容器名.ScaleLeft=x1容器名.ScaleTop=y1容器名.ScaleWidth=x2-x1容器名.ScaleHeight=y2-y1,16,6.2.3坐标刻度,VisualBasic程序设计中,经常使用的刻度单位为:缇、磅和毫米。通过设置容器的ScaleMode属性可以选择改变坐标系统的单位。1设置(选择)标准刻度ScaleMode属性值为1,容器坐标系的刻度单位为缇,1缇0.01764毫米0.05磅ScaleMode属性值为2,容器坐标系的刻度单位为磅,1磅0.353毫米。ScaleMode属性值为3,容器坐标系的刻度单位为像素,是显示器分辨率的最小单位。ScaleMode属性值为4,容器坐标系的刻度单位为字符,每个字符宽6磅、高12磅。ScaleMode属性值为5,容器坐标系的刻度单位为英寸。ScaleMode属性值为6,容器坐标系的刻度单位为毫米。ScaleMode属性值为7,容器坐标系的刻度单位为厘米。,17,6.2.3坐标刻度,当选择标准刻度时,系统自动使ScaleLeft、ScaleTop值为0,并设置ScaleHeight、ScaleWidth值,这些属性决定了容器坐标的最小值、最大值。2自定义刻度将ScaleMode值设置为0,则采用自定义刻度。用Scale方法设置坐标系后,ScaleMode值自动变为0。反之,ScaleLeft、ScaleTop、ScaleHeight、ScaleWidth属性被改变,ScaleMode值自动变为0,单位长度根据变化后的上述属性重新确定。,18,6.3.1使用颜色,使用图形方法绘图时总要使用不同的颜色,VisualBasic6.0使用的颜色用一个长整型数(通常用16进制)表示,如&HFFFF00&。其数值由3部分组成:右边的两位(16进制数,下同)代表红色的亮度值,中间的两位代表绿色的亮度值,左边的两位代表蓝色的亮度值。每个亮度值都可以取0255之间的数值,因此共有1600多万种不同的颜色取值。界面设计时可以通过在对象的属性窗口中选择需要设置的颜色属性,用打开的“调色板”对话框进行颜色设置。程序运行时,可以使用颜色函数、使用系统预定义颜色常量、直接赋值或使用通用对话框中的“颜色”对话框来指定颜色。,19,6.3.1使用颜色,1颜色函数VisualBasic提供了两个专门处理颜色的函数:RGB和QBColor。(1)RGB函数。RGB函数是颜色函数中最常用的一个,其使用格式为:RGB(Red,Green,Blue)其中:Red、Green、Blue分别表示红色的亮度值,绿色的亮度值和蓝色的亮度值,取值范围都是0255。如将窗体Form1的背景色设置为红色,命令如下:Form1.BackColor=RGB(255,0,0)RGB函数采用红、绿、蓝三色原理,返回一个Long整数,用来表示一个颜色值。表6-1列出了一些常见的颜色以及这些颜色的三色值。,20,6.3.1使用颜色,表6-2Color参数的设置值及对应的颜色,表6-1常见颜色的RGB值,21,6.3.1使用颜色,例如:将窗体Form1的背景色设置为红色,也可以写作:Form1.BackColor=QBColor(12)2使用预定义常量由VisualBasic6.0内部定义,读者可以在“视图”菜单的“对象浏览器”中选择ColorConstants,查看所有这些常量,在程序中不需要声明就可以直接使用。如:Form1.BackColor=vbRed将窗体背景设置为红色Form1.BackColor=vbGreen将窗体背景设置为绿色3直接赋值如果知道具体的颜色值,也可以直接给颜色属性赋值,如:Form1.BackColor=&HFF&设置窗体背景色为红色Form1.BackColor=&HFF00&设置窗体背景色为绿色Form1.BackColor=&HFFFF00&设置窗体背景色为黄色,22,6.3.2图形方法与应用,1画点方法Pset格式:容器.Psetstep(x,y),color该方法在容器上(x,y)处以值为color的颜色画点(x、y是Single类型表达式);缺省容器则指当前窗体,缺省color则为容器前景色(ForeColor)。容器的当前输出位置坐标为(容器名.CurrentX,容器名.CurrentY),加Step关键字则在坐标(容器名.CurrentX+x,容器名.CurrentY+y)位置画点。该方法所画点的大小,取决于容器的DrawWidth属性值。DrawWidth用来设置绘图线的宽度,值以像素为单位,取值范围是132767,缺省值为1即一个像素宽。设置该属性后,将影响Pset、Line和Circle等方法的输出效果。,23,6.3.2图形方法与应用,2返回某点颜色值的函数Point格式:Point(x,y)该函数的返回值为点(x,y)的颜色值。如执行语句“C=Point(50,100)”,将窗体坐标(50,100)处点的颜色值存入变量C。例6-1以下程序利用Pset方法绘制Cos(x)函数曲线。PrivateSubForm_Click()DimxAsInteger,iAsIntegerFori=0To10000PSet(i,1200),vbRed用画点的方法连线NextiForx=0To10000PSet(x,1000*Cos(x*3.1415926/1800)+1200),vbBlueNextxEndSub,24,6.3.2图形方法与应用,3画线、矩形方法Line(1)两点连线。格式1:容器名.Line(x1,y1)-(x2,y2),Color缺省容器名指窗体;缺省起点坐标则以当前输出位置为起点;缺省Color表达式则为容器的ForeColor属性;坐标点为Single类型表达式。例如,下列语句分别在窗体、控件Picture1上画线。Line(100,150)-(400,300),RGB(120,120,200)窗体坐标Picture1.Line(10,10)-(60,100),RGB(0,0,255)图片框坐标格式2:容器名.Line(x1,y1)-Step(x2,y2),Color所绘制直线的两个端点位置为(x1,y1)和(x1+x2,y1+y2)。,25,6.3.2图形方法与应用,(2)多点折线。连续使用缺省起点、画两点连线的语句,可以绘制多点折线:每句的终点位置为下一句的起点位置,首句或是采用格式1,或是以当前输出位置作为起点。例如:下列语句在窗体上所绘折线如图6-15所示。Line(50,100)-(100,100),RGB(120,120,200)Line-(150,150),RGB(120,120,200)Line-Step(-50,50),RGB(120,120,200)Line-(50,200),RGB(120,120,200)Line-(0,150),RGB(120,120,200)Line-(50,100),RGB(120,120,200),26,6.3.2图形方法与应用,图6-15多点折线(3)矩形与填充矩形。格式1:容器名.Line(x1,y1)-Step(x2,y2),Color,B指定位置为矩形对角点,以容器的FillStyle填充格式、FillColor颜色在矩形内部填充;图形边框的颜色由Color表达式指定,缺省Color表达式则为容器的ForeColor属性。图形的填充特性只有对封闭图形才起作用。,27,6.3.2图形方法与应用,格式2:容器名.Line(x1,y1)-Step(x2,y2),Color,BF用画矩形边框的颜色再填充矩形为实心,该语句的输出效果与容器的FillStyle、FillColor属性无关。例如:执行下列语句后,在窗体上的输出结果如图6-16所示。Form1.FillStyle=2Form1.FillColor=vbBlueForm1.ForeColor=vbGreenLine(100,100)-(1500,1000),vbRed,B红色外框,兰色水平填充线Line(1600,100)-(2500,1000),B绿色外框,兰色水平填充线Line(2800,100)-(3800,1000),vbRed,BF红色实心矩形,28,6.3.2图形方法与应用,4圆、圆弧与椭圆方法Circle(1)画圆。格式:容器名.CircleStep(x,y),radius,Color以(x,y)为圆心(有Step关键字则以(CurrentX+x,CurrentY+y)为圆心)、以radius为半径画颜色值为Color的圆。缺省容器名、Color选项的有关规则同前,不再赘述。(2)画圆弧。格式:容器名.CircleStep(x,y),radius,Color,start,endstart、end为Single类型表达式,该方法以start弧度为起点按逆时针方向到end弧度为止画一段圆弧(平行于x轴的正向为0弧度)。若start为负值,该方法还画出1条从圆心到圆弧相应端点的连线,参数end也同样。(3)画椭圆(弧)。格式:容器名.CircleStep(x,y),radius,Color,start,end,aspectaspect是取正值的Single类型表达式,为椭圆纵轴与横轴之比。若aspect值小于1,则radius为横轴的长度,否则为纵轴的长度。在缺省某参数前的参数时,不可以缺省“,”号。,29,6.4小结,本章主要介绍VisualBasic的图形控件和图形方法。图形控件包括图片框、影像框、形状控件和直线控件。图片框控件不仅可用以显示图片,也可以作为其他对象的容器、显示图形方法的输出结果和Print方法输出的文本等;影像框只能用以显示图片,同时由于它能够响应Click事件,所以常常用来作为图形命令按钮来使用。利用形状控件可以很方便地画出如圆、矩形等简单的图形;直线控件则可以画直线、折线,也可以画矩形。熟悉VisualBasic的坐标系统,是利用VisualBasic画图和进行图形处理的基础。每个容器对象都有一套自己的坐标系统,对象定位都是相对于容器的坐标系的。读者应理解坐标属性、坐标方法、坐标刻度单位等概念,并掌握它们的用法。利用图形方法可以画出更多、更高级的图形。使用图形方法一定要熟悉方法使用的格式,以及在画图时经常用到的一些对象属性的用法,如FillStyle、FillColor等。,
展开阅读全文