资源描述
,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第六章 图形技术,2,一个软件能否吸引用户,很重要的一点是对图形技术的运用是否得当。,漂亮的界面,生动的图形图像,往往能够激发起用户使用软件的欲望,。,图形控件,VB,坐标系,图形方法,本章细分为以下内容:,3,1,、,PictureBox,控件,(,图片框控件,),主要作用:显示图片、绘图和显示文本、作为其他控件的容器。,主要属性:,Picture,(配合,LoadPicture,函数),装入图片:,对象名,.Picture=,LoadPicture,(“,图片文件”,),删除图片:,对象名,.Picture=,LoadPicture,(“”),6.1,图形控件,PictureBox,控件的另一个很重要的,属性,:,AutoSize,当所要显示的图形比控件大时,如果,AutoSize,为,False,,超过的部分将被裁剪掉,且控件不提供滚动条;如果,AutoSize,为,True,,那么控件将会自动调整大小以显示完整图形。,PictureBox,控件,主要方法:,可以使用,Print,、,Cls,、,Pset,、,Line,、,Circle,、,Point,方法,主要事件:,Change,、,Click,、,MouseDown,、,MouseUp,、,MouseMove,等。,例子:,Private Sub Command1_Click(),Picture1.Autosize=True,Picture1.Picture=LoadPicture(“D:,巨蟹座,.jpg),Picture1.Print “,星座图片”,End Sub,6,6.1,图形控件,2,、,Image,控件,(,影像框控件,),主要作用:显示图片。,影像框比图片框占用的内存少,所以速度较快。,影像框内不能使用,Print,、,Pset,、,Line,、,Circle,等方法进行绘图和输出文本,影像框也不能作为其他控件的容器。,除了,Picture,属性之外,,Image,控件的一个很重要的属性:,Stretch,Stretch,属性,=False,,影像框自动改变大小适应其中的图片,Stretch,属性,=True,,图片自动调整尺寸适应影像框,常用事件:,与,Picture,控件类似,如,Change,、,Click,等。,2,、,Image,控件,(,影像框控件,),8,6.1,图形控件,3,、,Shape,控件,(,形状控件,),主要属性:,Shape,改变它可以得到以下,6,种图形,把这些图形作为控件来看待的。,BorderStyle:,边框类型,BorderColor,:,边框颜色,BorderWidth,:,边框宽度,如果其属性值大于,1,,则边框类型必然是,solid,FillStyle,:,填充类型,FillColor,:,填充颜色,实例,6-4,:,形状控件示例,在窗体上添加,6,个形状控件,并设计成控件数组,取名为,Shape1,;,2,个命令按钮用于控制程序的运行。,11,6.1,图形控件,4,、,Line,(直线控件),可以使用,Line,控件画直线,这是把所画出来的直线作为一个,控件,来看待的。,Line,控件的重要属性:,X1,、,Y1,、,X2,、,Y2,,分别表示直线两个端点的坐标。,Line,控件不响应任何事件,它只支持表面显示。,12,6.2 Visual Basic,坐标系,VB,中所有的对象,都是放在,容器,内的。要对,对象,进行,定位,,首先要了解容器内的坐标系统。,坐标系统包含三个要素:,坐标原点、坐标度量单位、坐标轴的长度与方向,每个容器都有一个默认的坐标系。最常见的容器是,窗体,和,图片框,。,容器的坐标系确定以后,就可以知道容器内对象的定位,与定位有关的四个属性是:,Left,、,Top,、,Width,、,Height,13,默认坐标系统(原点,左上角、单位,缇),Height,Y,X,0,0,容器,Width,Height,对象,1,对象,2,Width,Left,Top,Left,Top,14,定制坐标系统,使用,默认的坐标系统,,坐标原点只能在,容器的左上角,。,通过,定制坐标系统,,可以任意地设定,坐标系统的原点位置,以及,坐标的刻度,。,用到的容器属性:,ScaleLeft,、,ScaleTop,、,ScaleWidth,、,ScaleHeight,Y,X,缺省坐标系,ScaleLeft=0,ScaleTop=0,0,Y,X,坐标平移,Scaleleft=-30,ScaleTop=-50,0,(-30,-50),15,定制坐标系统,容器内部左上角的坐标通过,ScaleLeft,、,ScaleTop,来确定,,右下角的坐标还要用到另外两个属性:,ScaleWidth,、,ScaleHeight,。,右下角的坐标值为:,(ScaleLeft+ScaleWidth,,,ScaleTop+ScaleHeight),同时确定了坐标系的方向和单位,Y,X,0,(50,-60),ScaleLeft=0,ScaleTop=0,ScaleWidth=50,ScaleHeight=-60,Y,X,两个对角点确定一个坐标系,ScaleLeft=-30,ScaleTop=-50,ScaleWidth=100,ScaleHeight=110,0,(-30,-50),(70,60),16,定制坐标系统,ScaleLeft,、,ScaleTop,、,ScaleWidth,、,ScaleHeight,,这四个属性并,不会改变容器本身的大小尺寸,它们所起的作用只是对容器内部,区域的,“重新规划”,。,Y,X,0,(50,-60),ScaleLeft=0,ScaleTop=0,ScaleWidth=50,ScaleHeight=-60,Y,X,两个对角点确定一个坐标系,ScaleLeft=-30,ScaleTop=-50,ScaleWidth=100,ScaleHeight=110,0,(-30,-50),(70,60),17,例,、,通过,ScaleTop,,,ScaleLeft,,,ScaleWidth,和,ScaleHeight,属性,,,自定义图片框,Pic1,的坐标系。,Pic1.ScaleLeft=-200,Pic1.ScaleTop=250,Pic1.ScaleWidth=500,Pic1.ScaleHeight=-400,Y,X,0,300,-200,-150,250,窗体,Form1,18,定制容器内部的坐标系,除了利用以上所提的,ScaleLeft,、,ScaleTop,、,ScaleWidth,、,ScaleHeight,这四个属性之外,我们还可以利用,Scale,方法,进行定制。,定制坐标系统,19,语法:,容器,.Scale (xLeft,yTop),(xRight,yBottom),容器左上角的坐标值,容器右下角的坐标值,定制坐标系统,20,Y,X,0,300,-200,-150,250,例如,建立和,上面,一样的坐标系。,Pic1.Scale(-200,250),(300,-150),定制坐标系统,Pic1.ScaleLeft=-200,Pic1.ScaleTop=250,Pic1.ScaleWidth=500,Pic1.ScaleHeight=-400,21,刻度可以通过容器的,ScaleMode,属性设置。,0,用户定义。,1,缇。这是缺省刻度。,1,英寸,=1140,缇,2,磅。,72,磅,=1,英寸,3,象素。监视器或打印机分辨率的最小单位。,4,字符。打印时,一个字符有,1/6,英寸高,1/12,英寸宽,5,英寸,6,毫米,7,厘米,坐标刻度,ScaleMode,属性,Private Sub Command1_Click(),Form1.ScaleMode=6,Print Command1.Width,End Sub,应用,Scale,方法或者改变了,ScaleLeft,、,ScaleTop,、,ScaleHeight,、,ScaleWidth,属性值后,,ScaleMode,的值自动变为,0,23,例:,点击按钮,使,Shape1,对象移动。,Private Sub Command1_Click(),If Shape1.Left=Form1.Width Then,Shape1.Left=-Shape1.Width,Shape1.Left=Shape1.Left+1000,Else,Shape1.Left=Shape1.Left+1000,End If,End Sub,24,1,、执行下面程序段之后,窗体左上角坐标为(),,右下角坐标为()?,Form1.ScaleTop=1,:,Form1.ScaleLeft=1,Form1.ScaleHeight=-2,:,Form1.ScaleWidth=2,答案:,(,1,,,1,)(,3,,,1,),真题练习,25,2,、与语句,Scale(,2,2),(2,2),等价的程序段是()?,A,、,ScaleLeft=,2,:,ScaleTop=2,ScaleWidth=2,:,ScaleHeight=,2,B,、,ScaleLeft=,2,:,ScaleTop=2,ScaleWidth=4,:,ScaleHeight=,4,C,、,ScaleLeft=4,:,ScaleTop=,4,ScaleWidth=,2,:,ScaleHeight=2,D,、,ScaleLeft=,4,:,ScaleTop=2,ScaleWidth=4,:,ScaleHeight=,2,答案:,B,真题练习,26,判断题:移动框架时框架内控件也跟随移动,所以框架内,各控件的,Left,、,Top,属性值也将随之改变。,答案:错,真题练习,判断题:用,Scale,方法改变了窗体坐标系后,窗体的,Left,、,Top,属性值不变。,答案:对,27,6.3,图形方法(,pset,,,line,,,circle,)以及函数,point,6.3.1,使用颜色,可以使用,5,种方式设置颜色:,(1),直接在属性栏里进行设置。,(2),使用,RGB,函数。,(3),使用,QBColor,函数,选择,16,种,Qbasic,颜色中的一种。,(4),使用系统提供的颜色常数。,(5),直接使用,Long,类,型颜色值。,28,6.3.1,使用颜色,(,2,)使用,RGB,函数,RGB(red,green,blue),说明:,red,green,blue,3,种颜色,从,0,255,之间的一个亮度值,(0,表示亮度最低,而,255,表示亮度最高,),。,例:,Form1.BackColor=RGB(126,76,200),设定背景紫色,(,3,)使用,QBColor,函数,其使用格式如下:,QBColor(color),说明:,color,参数是一个界于,0,15,的整型数,分别代表,16,种颜色,如表,6-2,所示。,29,6.3.1,使用颜色,(,4,)使用系统定义的颜色常数,在,VB,系统中已经预先定义了常用颜色的颜色常数,如常数,vbRed,就代表红色,,vbGreen,代表绿色等等。,例如,,要将窗体的背景色设为红色。则可使用如下语句:,Form1.BackColor=vbRed,(,5,)直接使用颜色设置值,用十六进制数指定颜色的格式为:,&HBBGGRR,其中,,BB,指定蓝颜色的值,,GG,指定绿颜色的值,,RR,指定红色的值。每个数段都是两位十六进制数,即从,00,FF,。,例如,,Form1.BackColor=&HFF0000,它相当于:,Form1.BackColor=RGB(0,0,255),30,1,设置线宽,DrawWidth,属性,窗体、图形框或打印机的,DrawWidth,属性给出这些对象上所,画线,的,宽度,或,点,的,大小,。例如:,Form1.DrawWidth=2,(宽度为,2,个象素),缺省值为,1,,即一个像素宽。,6.3.2,线宽、线型与填充模式,31,窗体或图形框或打印机的,DrawStyle,属性给出这些对象上所,画线,的,形状,。,2.,设置线型,DrawStyle,属性,32,6.3.3,图形方法与应用,(1)Pset,方法,画点,其语法格式如下:,容器,.Pset(X,,,Y),,,color,例:,单击窗体画出带颜色的随机点。,Form1.PSet(Rnd*Form1.Width,Rnd*Form1.Height),QBColor(Int(Rnd*16),缺省为,ForeColor,例,6-6,利用,Pset,方法绘制,Cos(x),函数曲线,Private Sub Form_Click(),Dim x As Integer,i As Integer,For i=0 To 10000,PSet(i,1200),vbRed,Next i,For x=0 To 1000,PSet(x,1000*Cos(x*3.1415926/1800)+1200),vbBlue,Next x,End Sub,(1)Pset,方法,画点,34,(,2,),Point,函数,获取任意点的颜色值,格式:,Point,(,x,,,y,),该函数的返回值为点(,x,,,y,)的颜色值,C,Point,(,50,,,100,),35,(,3,),line,方法,画线、矩形,容器名,.Line(x1,y1),(x2,y2),Color,BF,其中:对象可以,是窗体或图片框。,(x1,y1),,,(x2,y2),为线段的起点、终点坐标。省略起点,缺省为,当前输出位置,,缺省,Color,为容器的,ForeColor,属性。,B,表示画矩形,,F,表示用画矩形的边框颜色来填充矩形,若无,F,,则由对象的,FillColor,和,FillStyle,来决定填充色。,Private Sub Form_Click(),DrawWidth=5 ,决定线的宽度,FillStyle=0,FillColor=vbYellow,Line(1000,1000)-(3000,3000),QBColor(12),B,End Sub,各参数可根据实际要求进行取舍,但如果舍去的是中间参数,参数的位置分隔符不能舍去。,37,(,1,),当前坐标,的概念(当前输出位置),容器的,CurrentX,,,CurrentY,属性即表示在绘图时的当前坐标,也就是,系统最近所获得的那个坐标位置,。在还没有开始画图的时候,当前坐标等于,(ScaleLeft,ScaleTop),,也就是,容器左上角,的坐标。,(,2,)相对坐标的概念,如果坐标值前加上关键字,Step,,就表示使用的是,相对坐标,,例如,Step(x,y),。表示从,当前坐标,分别再加上,x,、,y,的值。,38,对象,.Line(x1,y1),Step,(x2,y2),颜色,BF,对象,.PSet,Step,(x,y),颜色,例如:,Line(200,100),(250,150),等价于,Line(200,100),Step(50,50),39,画一条从,(250,300),到,(400,500),点的直线,例:,画一个左上角在,(20,40),,右下角在,(150,200),的矩形,注意在,color,参数省略时,逗号并不省略。,出发点是,(150,250),,终点是向,X,轴正向走,150,,向,Y,轴正向走,50,的点,从当前位置(由,CurrentX,,,CurrentY,决定)画到,(400,500),Line(250,300)-(400,500),Line-(400,500),Line(150,250)-Step(150,50),等同于:,Line(150,250)-(300,300),Line(20,40)-(150,200),B,40,真题练习,1,、当使用,Line,方法画直线后,当前坐标为()?,A,、容器对象的原点,B,、直线的起点,C,、直线的终点,D,、容器对象的中心,答案:,C,41,真题练习,2,、假设窗体的当前坐标为(,200,,,200,),则执行语句,Line Step,(,100,,,100,),Step,(,200,,,200,)时,绘制,的直线的起点坐标为()?终点坐标为()?,答案:(,300,,,300,)(,500,,,500,),42,3,、语句,Line,(,100,,,100,)(,500,,,500,),,vbRed,,,BF,的功能是()?,答案:在窗体上绘制一个红色的实心矩形,真题练习,43,真题练习,4,、,Form1.FillColor=vbBlue,Form1.FillStyle=0,Line,(,100,,,100,)(,500,,,500,),,vbRed,,,B,以上程序段的功能是()?,答案:在窗体上绘制一个边框为红色、填充色为,蓝色的矩形。,44,(,4,),Circle,方法,画圆、椭圆、圆弧、扇形,格式:,对象,.Circle Step(x,y),半径,颜色,起始角,终止角,纵横轴比率,其中:,(x,y),为圆心坐标,可选关键字,Step,表示采用相对坐标值;,例如:,Circle(1000,1000),1000,圆弧和扇形通过参数起始角,终止角控制(单位:,弧度,)。角度前加,负号,表示在圆心和圆弧间画出,径向线;,负号并不是表示负角度,。,椭圆通过,纵横轴比率,控制,默认值为,1,,画圆。,Circle(1000,1000),1000,vbRed,0.1,0.7,Circle(1000,1000),1000,vbRed,3,Circle(1000,1000),1000,vbRed,0.1,0.7,3,Circle(1000,1000),1000,vbRed,0.1,-0.7,45,(,3,),Circle,方法,画圆、椭圆、圆弧、扇形,坐标系统:,Scale(-100,100)-(100,-100),例,6-9,画一个当前窗体中所能容纳的,最大,的蓝色实心圆,怎么体现,最大?,47,真题练习,1,、,答案:,B,绘制以上图形的语句是:,(,A,),Circle(1000,1000),1000,-0.0001,1.57,7,(,B,),Circle(1000,1000),1000,-0.0001,1.57,0.7,(,C,),Circle(1000,1000),1000,0.0001,1.57,0.7,(,D,),Circle(1000,1000),1000,-0.0001,1.57,0.7,48,真题练习,2,、,绘制以上图形的语句是:,(,A,),Circle(1000,1000),800,vbRed,3.14/4,3.14*3/4,(,B,),Circle(1000,1000),800,vbRed,-3.14/4,-3.14/4,(,C,),Circle(1000,1000),800,vbRed,-3.14/4,3.14*3/4,2,(,D,),Circle(1000,1000),800,vbRed,-3.14/4,-3.14*3/4,答案:,D,49,真题练习,3,、,扇形的填充色由什么决定?,窗体的,FillStyle,属性,Circle,方法,窗体的,FillStyle,属性和,FillColor,属性,窗体的,FillColor,属性,答案:,C,
展开阅读全文