资源描述
第九章VisualBasic图形处理,第九章VisualBasic图形处理,9.1图形操作基础9.2图形控件9.3绘图方法,9.1图形操作基础,9.1.1坐标系统对象定位使用的是容器的坐标系,每个容器都有一个坐标系。坐标系由三要素构成:坐标原点,坐标度量单位(刻度),坐标轴的长度与方向。,9.1图形操作基础,1.坐标原点与坐标轴方向在默认的VB坐标系统中,原点(0,0)位于容器内部的左上角,X轴的正向水平向右,Y轴的正向垂直向下。对于窗体和图片框来说,这里所说的“容器内部”是指可以容纳其他控件并且可用于绘图的区域,该区域称为绘图区或工作区。绘图区不包括边框,窗体的绘图区还要将标题栏和菜单栏(若有)除外。因此,窗体中控件的Left属性是指控件左上角到窗体绘图区左边的距离,Top属性是控件左上角到窗体绘图区顶边的距离。,9.1图形操作基础,2.坐标刻度坐标刻度即容器内坐标的度量单位。VB中默认的刻度为缇(1厘米约为567缇,1英寸约为1440缇)。刻度由窗体、图片框等容器对象的ScaleMode属性决定,该属性的设置值如表12.1所示,其中大于0的设置值称为标准刻度。,9.1图形操作基础,ScaleMode属性的设置值:,9.1图形操作基础,3.自定义坐标系在实际应用中,有时可能需要改变坐标系的原点、坐标轴的方向或刻度,这时就要建立自己的坐标系。创建自定义坐标系可以使用容器对象的属性,亦可使用它的方法。,9.1图形操作基础,9.1.2颜色设置1.使用QBColor函数2.使用RGB函数3.使用VB系统颜色常数4.使用颜色值,9.1图形操作基础,9.1.3图形属性1.线宽和线型DrawWidth属性用来返回或设置图形方法输出的线宽。DrawStyle属性用来返回或设置图形方法输出的线型。该属性的设置值04的效果分别与Line控件的BordeStyle属性的15对应。若DrawWidth属性设置值大于1,在DrawStyle属性被设置为14时,只能画实线。,9.1图形操作基础,2.填充颜色与填充样式FillColor属性用于为Line和Circle方法生成的矩形和圆填充颜色。FillStyle属性用于为Line和Circle方法生成的矩形和圆指定填充的图案。该属性的设置值与Shape控件的FillStyle属性相同。除Form对象外,若FillStyle属性被设置为默认值1(透明),则忽略FillColor属性的设置值。,9.2图形控件,9.2.1图形框控件图形框控件(PictureBox)可以用来显示位图、JPGE、GIF、图标等格式的图片,在工具箱面板中,图形框控件的图标如图9-2所示。图形框的图片加载方式有两种,一是通过Picture属性选择需要加载的图片,二是通过LoadPicture()函数实现。,9.2图形控件,9.2.2图像框控件图像框控件(Image)是用来控制图形图像输出的,用户可以通过所建立的Image对象来指定图像文件贴在窗体的位置。,9.2图形控件,前面讲过,图形框与图像框的用法基本相同,但有以下区别:(1)图形框是“容器”控件,可以作为父控件,而图像框不能作为父控件。也就是说,在图形框中可以包含其他控件,而其他控件不能“属于”一个图像框。图形框是一个“容器”,可以把其他控件放在该控件上,作为它的“子控件”。当图形框中含有其他控件时,如果移动图形框,则框中的控件也随着一起移动,并且与图形框的相对位置保持不变;图形框内的控件不能移到图形框外。(2)图形框可以通过Print方法接收文本,并可接收由像素组成的图形,而图像框不能接收Print方法输入的信息,也不能用绘图方法在图像框上绘制图形。每个图形框都有一个内部光标(不显示),用来批示下一个将被绘制的点的位置,这个位置就是当前光标的坐标,通过CurrentX和CurremY属性来记录。(3)图像框比图形框占用的内存少,显示速度快。在用图形框和图像框都能满足需要的情况下,应优先考虑使用图像框。,9.2图形控件,例题9-3:编写如下代码,在两个图像框中实现图像文件的交换,运行效果如图所示。,9.2图形控件,PrivateSubForm_Load()Image1.Picture=LoadPicture(C:DocumentsandSettingsAllUsersDocumentsMyPictures示例图片Winter.jpg)Image2.Picture=LoadPicture(C:DocumentsandSettingsAllUsersDocumentsMyPictures示例图片Sunset.jpg)EndSubPrivateSubCommand1_Click()Image3.Picture=Image1.PictureImage1.Picture=Image2.PictureImage2.Picture=Image3.PictureImage3.Picture=LoadPicture()EndSub,9.2图形控件,9.2.3直线控件和形状控件直线控件(Line)是VisualBasic提供的画线工具。使用直线控件的方法与使用其他控件相同,单击工具箱中直线控件的图标,然后把鼠标移到窗体中所需的位置,按下鼠标左键拖拉到直线的终点,松开鼠标,即可完成直线的绘制。Line控件主要属性是BorderWidth、BorderStyle和BorderColor属性,以及x1、y1和x2、y2属性。BorderWidth确定线的宽度,BorderStyle确定线的形状,BorderColor确定线的颜色。x1、y1和x2、y2属性控制线的两个端点的位置。,9.2图形控件,Shape控件可以用来画矩形、正方形、椭圆、圆、圆角矩形及圆角正方形。将Shape控件添加到窗体时默认为矩形,通过Shape属性可确定所需要的几何形状。FillStyle属性为形状控件指定填充的图案,FillColor属性用于为形状控件着色。该控件也具有BorderWidth、BorderStyle和BorderColor属性,分别为边线的宽度、样式和颜色。,9.3绘图方法,9.3.1Line方法Line方法用于在对象上画直线或矩形。画连接线时,前一条线的终点是后一条线的起点。DrawWidth属性,决定了线的宽度。语法格式如下:对象.LineStep(x1,y1)-Step(x2,y2),颜色,BF,9.3绘图方法,说明:(1)对象:可以是窗体或图片框,默认时为当前窗体。(2)(x1,y1):线段的起点坐标或矩形的左上角坐标。(3)(x2,y2):线段的终点坐标或矩形的右下角坐标。(4)Step:表示采用当前作图位置的相对值。(5)颜色:所绘制图形的颜色,可以使用RGB函数或QBColor参数指定。若省略,则使用对象的ForeColor属性值。(6)B:表示画矩形。(7)F:表示用画矩形的颜色来填充矩形,F必须与关键字B一起使用。如果只用B不用F,则矩形的填充由对象当前的FillColor和FillStyle属性决定。画直线时,省略BF参数;画矩形时,参数B为空心矩形,BF为实心矩形。,9.3绘图方法,例题9-4:使用Line方法绘制柱状图,并用不同颜色进行填充。运行效果如图所示。,9.3绘图方法,PrivateSubForm_Load()ClsScale(0,100)-(100,0)Constx0=5Consty0=10Line(x0,y0)-(x0,90)绘制Y轴Line(x0,y0)-(90,y0)绘制X轴Line(x0,90)-(7,87)绘制Y轴箭头Line(x0,90)-(3,87),Line(90,10)-(87,12)绘制X轴箭头Line(90,10)-(87,8)Fori=1To7绘制矩形并填充颜色FillStyle=iFillColor=RGB(255-i*20,255-i*30,255-i*10)Line(x0+i*10,y0+i*10)-(x0+i*10+6,y0),BCurrentX=x0+i*10-1CurrentY=y0+i*10+8PrintiNextEndSub,9.3绘图方法,例题9-5:使用Line方法绘制五角星。运行效果如图所示。,9.3绘图方法,PrivateSubForm_Load()ScaleMode=3DrawWidth=3Line(150,30)-Step(-50,110),RGB(255,0,0)终点采用相对坐标Line-Step(120,-65),RGB(255,0,0)以上次画线的终点为本次画线起点Line-Step(-140,0),RGB(255,0,0)Line-Step(120,65),RGB(255,0,0)Line-(150,30),RGB(255,0,0)返回最初的起点EndSub,9.3绘图方法,9.3.2Pset方法用于在窗体、图片框指定位置上画点,还可以为点指定颜色,利用Pset方法可画任意曲线。其语法格式如下:对象.PsetStep(x,y),Color,9.3绘图方法,说明:(1)参数(x,y)为所画点的水平和垂直坐标。(2)Step表示采用当前作图位置的相对值。(3)Color为点的颜色。,9.3绘图方法,例题9-6:选择适当颜色利用Pset方法绘制花型图案。运行效果如图所示。,9.3绘图方法,PrivateSubForm_Resize()ClsDimxAsSingle,yAsSingleDimrAsSingle,tAsSingleConstpi=3.1415926Scale(-50,50)-(50,-50)Fort=0To2*piStep0.0002r=45*Cos(6*t)x=r*Cos(t)y=r*Sin(t)PSet(x,y),vbRedPSet(x*0.5,y*0.5),vbGreenPSet(x*0.3,y*0.3),vbBluePSet(x*0.1,y*0.1),vbYellowNexttEndSub,9.3绘图方法,9.3.3Circle方法Circle方法用于画圆、椭圆、圆弧和扇形,其语法格式如下:对象.CircleStep(x,y),半径,颜色,起始角,终止角,纵横比,9.3绘图方法,说明:(1)对象:可以是窗体、图片框或打印机,省略时默认为当前窗体。(2)(x,y):为圆心坐标。(3)Step:表示采用当前作图位置的相对值。(4)颜色:指定圆周边线的颜色。若省略,则使用ForeColor属性值。可以使用所属对象的FillColor和FillStyle属性填充封闭的图形。(5)起始角和终止角:圆弧和扇形通过参数起始角、终止角控制。当起始角、终止角取值在02时为圆弧。当在起始角、终止角的取值前加一负号时,画出扇形,负号表示从圆心到圆弧端点画径向线。(6)纵横比:控制画椭圆,默认值为1,此时为标准圆。,9.3绘图方法,使用Circle方法时,如果想省掉中间的参数,逗号不能省略。例如:画椭圆省掉了颜色、起始角、终止角三个参数,则必须加上四个连续的逗号,它表明这三个参数被省掉了。几种常用格式如下:画圆:对象名.Circle(X,Y),半径,颜色例如:Me.Circle(100,100),70,RGB(255,0,0)画椭圆:对象名.Circle(X,Y),半径,颜色,纵横比例如:Me.Circle(100,100),70,RGB(255,0,0),0.5画弧线:对象名.Circle(X,Y),半径,颜色,起始角,终止角,纵横比例如:Me.Circle(100,100),70,RGB(255,0,0),1/4*3.14,3/4*3.14,1.5画扇形:对象名.Circle(X,Y),半径,颜色,-起始角,-终止角,纵横比例如:Me.Circle(100,100),70,RGB(255,0,0),1/4*3.14,-3/4*3.14,9.3绘图方法,例题9-7:用Circle方法完成各种圆形图案的绘制,并选择适当颜色进行填充。运行效果如图所示。,9.3绘图方法,PrivateSubForm_Resize()Form1.Scale(-50,50)-(50,-50)Form1.Circle(-20,20),10,vbRed画一个圆心(-20,20)半径10的红色的圆(默认空心)Form1.FillStyle=0设定填充模式为实心Form1.FillColor=vbBlue设定填充色蓝色Form1.Circle(20,20),10,vbRed下来画出来的就是填充了实心蓝色的圆了Form1.DrawWidth=3设定边框宽度为3Form1.Circle(-20,-20),10,vbRed这次绘制出来的圆边框粗细为3Form1.DrawStyle=5设定边框不可见Form1.FillColor=vbRed设定填充色红色Form1.Circle(20,-20),10这次绘制出来一个无边框、填充颜色是红色的圆EndSub,9.3绘图方法,例题9-8:用Circle方法画圆、椭圆、圆弧和扇形。运行效果如图所示。,9.3绘图方法,PrivateSubForm_Resize()ConstPi=3.1415926Circle(800,600),400,RGB(255,0,0)画圆Circle(2000,600),400,RGB(255,0,0),1.5画椭圆Circle(3200,600),400,RGB(255,0,0),0.5Circle(1200,2400),900,RGB(255,0,0),Pi/6,Pi弧Circle(1400,2800),900,-Pi/3,-Pi空心扇形,起始角、终止角均为负值FillColor=vbGreen填充颜色FillStyle=0DrawWidth=3Circle(3000,2200),700,vbRed,-Pi/5,-Pi*2扇形FillColor=vbYellowCircleStep(200,-60),700,vbBlue,-Pi*2,-Pi/5EndSub,9.3绘图方法,9.3.4Point方法Point方法用于返回窗体或图形框上指定点的RGB颜色值,其语法格式如下:对象名.Point(X,Y),其中X、Y为对象上某点的坐标。当(x,y)所确定的点不在对象上时,Point方法的返回值等于-1。,9.3绘图方法,例题9-9:用Point方法实现字体仿真。运行效果如图所示。,9.3绘图方法,PrivateSubForm_Load()Picture1.Scale(0,0)-(100,100)Picture2.Scale(0,0)-(100,100)Picture1.PrintPOINT方法DimiAsInteger,jAsInteger,colorAsLongFori=1To100Forj=1To100color=Picture1.Point(i,j)Ifmcolor=FalseThenPicture2.PSet(i,j),colorNextjNextiEndSub,9.4本章小结,本章对于VisualBasic中的图形处理技术进行了全面介绍,涉及的内容主要有坐标系的选择、颜色设定、常用图形控件、常用图形绘制方法等几个方面,对于每一个知识点都配合示例进行阐述。在实际应用中,要将这些知识点融会贯通,综合运用,才能达到程序设计的需求。,
展开阅读全文