第十章图形操作第1页共35页VisualBasic6.01第十章图形操作主要内容图形操作基础绘图属性图形控件图形方法应用图形操作基础要点默认坐标系坐标系-用scale方法定义属性:ScaleLeft、ScaleTop、ScaleHeight、ScaleWidth、Top、Left、Height、Width绘图属性要点窗体和图形控件(PictureBox)有:DrawWidth–用图形方法绘线的宽度DrawStyle–用图形方法绘线的形状(DrawWidth=1时有效)FillColor–用图形方法绘制封闭图形中的填充色FillStyle–用图形方法绘制封闭图形的填充线方式(0-7共8种)ForeColor-用图形方法绘制图形的边框颜色(图形方法的颜色参数设置优先)形状控件Shape有:Shape–选择控件的几何形状(0-5共6种)BorderWidth–控件的边框线宽BorderStyle–控件的边框线形状(BorderWidth=1时有效)BorderColor–控件的边框颜色FillColor–控件的填充线的颜色FillStyle–控件中的填充图案样式BackColor–控件图像的背景色(BackStyle属性应设置为不透明(opaque)才有效)Line控件有DrawMode–控件BorderWidth–控件的线宽BorderStyle–控件的线样式BorderColor–控件的线颜色X1-控线的起点坐标Y1-控件的起点坐标X2-控件的终点坐标Y2-控件的终点坐标公有属性DrawMode–图形控件或图形方法的新像素和原有像素的组合方式(1-16共16种)图形控件要点:第十章图形操作第2页共35页VisualBasic6.02PictureBox(图形框)–重要属性Autosize、Picture装入图形方法LoadPictureImage(图像框)–重要属性Stretch、Picture装入图形方法LoadPictureShape(形状)–重要属性Shap图形几何形状Line(画线工具)图形方法Pset–画点Line–画线Cricle–画圆Point–取点的颜色值应用要点:几何图形绘制简单动画设计图形漫游图形处理技术改变窗体外观加入后台音乐10.1图形操作基础VisualBasic提供的图形控件主要有PictureBox(图形框)、Image(图像框)、Line(画线控件)、Shape(形状控件)。提供的图形方法有Line、Circle、Pset和Point等。为了方便图形操作,VisualBasic提供了系统标准坐标系和用户自定义坐标系两种方式的坐标系。10.1.1坐标系统每个容器都有一个坐标系,构成一个坐标系,需要三个要素:坐标原点、坐标度量单位、坐标轴的长度与方向。属性ScaleTop、ScaleLeft用于控制容器对象左边和顶端的坐标,根据这两个值来确定坐标原点。所有对象的这两个属性的默认值为0,即坐标原点在对象的左上角。属性ScaleHeight和ScaleWidth确定对象内部水平方向和垂直方向的单元数。属性ScaleMode决定容器对象的坐标度量单位。坐标系单位有8种形式。缺省单位是Twip。每英寸1440个Twip,20个Twip为一磅。ScaleMode属性设置一览表属性设置单位0用户定义(User)1twip(默认值)2磅(point,每英寸72磅)第十章图形操作第3页共35页VisualBasic6.033像素(pixed,与显示器分辨率有关)4字符(默认高为12磅,宽20磅的单位)5英寸(inch)6毫米(millimeter)7厘米(centimeter)度量单位转换使用ScaleX和ScaleY方法,格式如下:对象.ScaleX(转换值,原坐标单位,转换坐标单位)对象.ScaleY(转换值,原坐标单位,转换坐标单位)PrivateSubForm_Load()x=ScaleX(45,1,7)‘将45由Twip转换成厘米7.937508E-02y=ScaleY(45,1,6)‘将45由Twip转换成毫米0.7937508MsgBoxx&&yEndSub无论采用那种坐标度量单位,默认坐标原点在对象的左上角,横向向右为X轴的正向,纵向向下为Y轴的正向。当新建一个窗体时,窗体采用默认坐标系,属性Height=3600(包括标题栏和水平边框的宽度),Width=4800(包括垂直边框的宽度)。而属性ScaleLeft=0,ScaleTop=0,Scaleheight=3195,ScaleWidth=468010.1.2自行定义坐标系方法一:通过ScaleTop,ScaleLeft,ScaleWidth和ScaleHeight属性实现。对象的左上角坐标为(ScaleLeft,ScaleTOP),右下角的坐标为(ScaleWidth+ScaleLeft,ScaleHeight+ScaleTop)。根据左上角和右下角坐标值的大小自动设置坐标轴的正向。X轴与Y轴的度量单位分别是1/ScaleWidth和1/ScaleHeight。方法二:采用Scale方法来设置坐标系:格式:[对象.]Scale[(xLeft,yTop)-(xRight,yBotton)]对象可以使窗体、图形框和打印机。如省略对象名,则为带有焦点的窗体对象。(xLeft,yTop)表示定义对象的左上角坐标,(xRight,yBotton)则表示定义对象的右下角坐标。VB根据Scale方法给定的参数自动计算出对象的属性ScaleLeft、ScaleTop、ScaleHeight、ScaleWidth的值。计算的方法如下:ScaleLeft=xLeftScaleTop=YtopScaleHeight=yBottom-yTopScaleWidth=xRight-xLeft由此式子可得出一个对象的ScaleHeight和ScaleWidth也可能是一个负值,但是对象的Width和Height属性值则不随Scale的定义而发生变化,永远保持一个正值。[例10.1]在Form_Paint事件中定义窗体的坐标系。[例10.1]在myvb\vb10\ex10_1\lbc10_1.vbp第十章图形操作第4页共35页VisualBasic6.04PrivateSubForm_Load()ClsForm1.AutoRedraw=TrueForm1.Scale(-200,250)-(300,-150)'在窗体中设置坐标系Line(-200,0)-(300,0)'画X轴Line(0,250)-(0,-150)'画Y轴CurrentX=0:CurrentY=0:Print0'标记坐标原点CurrentX=280:CurrentY=40:PrintX'标记X轴CurrentX=5:CurrentY=240:PrintY'标记Y轴EndSub说明:可在程序中使用Scale方法改变坐标系统。当Scale方法不带参数时,取消用户定义的坐标系,恢复缺省坐标系。改变坐标系后产生的影响:[例10.1a]观察画线Line(0,0)-(1000,1000)在不同坐标系中的效果[例10.1a]在myvb\vb10\ex10_1a\lbc10_1a.vpbPrivateSubCommand1_Click()'缺省坐标ClsScale'采用缺省坐标系'缺省坐标系(xLeft,yTop)=(ScaleTop,ScaleLeft)=(0,0)'(xRight,yBottom)=(ScaleLeft+ScaleWidt,ScaleTop+ScaleHeight)='(4680,3195)Line(0,0)-(1000,1000)EndSubPrivateSubCommand2_Click()'用户定义ClsForm1.Scale(0,1000)-(1000,0)'定义用户坐标系Line(0,0)-(1000,1000)EndSub[例10.1b]控件对象在坐标系内与X轴和Y轴的位置保持相对不变[例10.1b]在myvb\vb10\ex10_1b\lbc10_1b.vpbPrivateSubCoordinate()ClsLine(0,0)-(5400,0)‘画线Line(0,0)-(0,3800)Label1.Caption=Form.ScaleLeft=&Form1.ScaleLeft&vbCrLf_&Form.ScaleTop=&Form1.ScaleTopPicture1.Top=1080:Picture1.Left=1080第十章图形操作第5页共35页VisualBasic6.05'label2.Caption=0,label3.Caption=Y,label4.Caption=X,vbCrLf相当于chr(13)Label2.Top=120:Label2.Left=120Label3.Top=3240:Label3.Left=120Label4.Top=120:Label4.Left=5340EndSubPrivateSubCommand1_Click()'左移'结果坐标轴线和图形框向左上角推进渐渐从窗体上消失Form1.ScaleLeft=100+Form1.ScaleLeft‘改变坐标系统Form1.ScaleTop=100+Form1.ScaleTopCoordinate'调用子过程EndSubPrivateSubCommand2_Click()'右移'结果坐标轴线和图形框向右下角推进渐渐从窗体上消失Form1.ScaleLeft=Form1.ScaleLeft–100‘改变坐标系统Form1.ScaleTop=Form1.ScaleTop-100Coordinate'调用子过程EndSub10.1.3图形层VB在构造图形时,在三个不同的屏幕层次上放置图形的可视组成部分。就视觉效果而言,最上层离用户最近,而最下层离用户最远。图形层放置的对象一览表层次对象类型最上层工具箱中除标签、线条、形状,image外的控件对象中间层标签、线条、形状控件对象和image最下层由图形方法所绘制的图形位于上层的对象会覆盖下层相同位置的任何对象,即使下层对象在上层对象后面绘制。处于同一图形层的对象的叠放顺序与操作有关,后绘在前绘上面。同一图形层内控件对象排列顺序称为Z序列。设计时可通过格式菜单中的顺序命令调整Z序列。运行时可通过Zorder方法将特定的对象调整到同一图层的前面或后面。如果控件不属于同一层,则Zorder方法无效。Zorder方法的语法格式为:对象.Zorder[position]position=0表示该控件被定位于Z序列的前面position=1表示该控件被定位于Z序列的后面第十章图形操作第6页共35页VisualBasic6.06[例10.2]Zorder方法的使用[例10.2]在myvb\vb10\ex10_2\lbc10_2.vpbPrivateSubCommand1_Click(IndexAsInteger)'command1为命令按钮组Command1(Index).ZOrder0'单击哪个按钮,哪个按钮就在最前面出现EndSubPrivateSubForm_Load()DimiFori=1To4LoadCommand1(i)'设计命令按钮组Command1(i).ToolTipText=Command&i'给按钮加提示Command1(i).Left=Command1(i-1).Left+250'确定出现位置Command1(i).Top=Command1(i-1).Top+300Command1(i).Visible=True'使其可见'Command1(0).Style=1'命令按钮可以加载图标只允许在属性窗口设置SelectCaseiCase1Command1(i).Picture=LoadPicture(App.Path+\Cut.bmp)Case2Command1(i).Picture=LoadPicture(App.Path+\copy.bmp)