第9章图形操作-PPT幻灯片_第1页
第9章图形操作-PPT幻灯片_第2页
第9章图形操作-PPT幻灯片_第3页
第9章图形操作-PPT幻灯片_第4页
第9章图形操作-PPT幻灯片_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

9.1绘图控件1Line控件Line控件常用的属性为:BorderColor:设置线的颜色;BorderWidth:设置线的宽度,默认值为1;BorderStyle:设置线型,有7个取值,默认值为1;X1,Y1:设置或返回线的起点坐标;X2,Y2:设置或返回线的终点坐标。值形状0Transparent透明,无线1Solid实线2Dash长虚线3Dot虚线4Dash-Dot点划线5Dash-Dot-Dot双点划线6Inside-Solid内实线值与线型对照表

注意:运行时可以通过改变X1、X2、Y1和Y2

属性来移动它或者调整它的大小。而不能使用Move方法例:用Line控件在窗体上显示7条不同颜色、不同类型的垂直线及7条不同颜色、不同宽度的水平线。要点:用控件数组的方法添加7条垂直线及7条水平线,用循环语句设置Line控件的BorderStyle属性和BorderWidth属性以实现直线的不同类型及不同宽度。注意:

BorderWidth值大于1时,BorderStyle值重新设置为默认值1。PrivateSubForm_Activate()DimiAsIntegerFori=1To6LoadLine1(i):Line1(i).Visible=TrueLine1(i).Y1=Line1(i-1).Y1+500Line1(i).Y2=Line1(i-1).Y2+500Line1(i).BorderWidth=Line1(i-1).BorderWidth+1Line1(i).BorderColor=QBColor(i)LoadLine2(i):Line2(i).Visible=TrueLine2(i).X1=Line2(i-1).X1+600Line2(i).X2=Line2(i-1).X2+600Line2(i).BorderColor=QBColor(i+1)Line2(i).BorderStyle=iNextiEndSub2Shape控件Shape控件预定义了六种形状,通过设置Shape控件的Shape属性获得所需要的形状。属性值常数说明0Rectangle矩形1Square正方形2Oval椭圆3Circle圆4RoundedRectangle圆角矩形5RoundedSquare圆角正方形2自定义坐标系方法一:通过ScaleTop,ScaleLeft,ScaleWidth和ScaleHeight属性实现。对象的左上角坐标为(ScaleLeft,ScaleTOP),右下角的坐标为(ScaleWidth+ScaleLeft,ScaleHeight+ScaleTop)。根据左上角和右下角坐标值的大小自动设置坐标轴的正向。X轴与Y轴的度量单位分别是1/ScaleWidth和1/ScaleHeight。属性含义ScaleLeft返回/设置对象左边界的水平坐标ScaleTop返回/设置对象上边界的垂直坐标ScaleWidth返回/设置对象内部水平的宽度,不包括边框ScaleHeight返回/设置对象内部垂直的高度,不包括边框和标题方法二:采用Scale方法来设置坐标系:格式:[对象.]Scale[(xLeft,yTop)-(xRight,yBotton)]对象可以使窗体、图形框和打印机,省略为窗体对象;(xLeft,yTop)表示定义对象的左上角坐标;(xRight,yBotton)则表示定义对象的右下角坐标。VB根据Scale方法给定的参数自动计算出对象的属性ScaleLeft、ScaleTop、ScaleHeight、ScaleWidth的值。计算的方法如下:ScaleLeft=xLeftScaleTop=YtopScaleHeight=yBottom-yTopScaleWidth=xRight-xLeft2自定义坐标系例:观察画线Line(0,0)-(1000,1000)在不同坐标系中的效果PrivateSubCommand1_Click()'缺省坐标Scale'采用缺省坐标系Line(0,0)-(1000,1000)EndSubPrivateSubCommand2_Click()'用户定义Form1.Scale(0,1000)-(1000,0)'定义用户坐标系Line(0,0)-(1000,1000)EndSub缺省坐标系画的直线自定义坐标系画的直线3图形层VB在构造图形时,在三个不同的屏幕层次上放置图形的可视组成部分。就视觉效果而言,最上层离用户最近,而最下层离用户最远。图形层放置的对象一览表层次对象类型最上层工具箱中除标签、线条、形状,image外的控件对象中间层标签、线条、形状控件对象和image最下层由图形方法所绘制的图形位于上层的对象会覆盖下层相同位置的任何对象,即使下层对象在上层对象后面绘制。处于同一图形层的对象的叠放顺序与操作有关,后绘在前绘上面。同一图形层内控件对象排列顺序称为Z序列。运行时可通过Zorder方法将特定的对象调整到同一图层的前面或后面。如果控件不属于同一层,则Zorder方法无效。Zorder方法的语法格式为:对象.Zorder[position]position=0表示该控件被定位于Z序列的前面position=1表示该控件被定位于Z序列的后面9.3图形属性1CurrentX,CurrentY属性CurrentX属性:设置或返回的当前坐标的水平坐标CurrentY属性:设置或返回的当前坐标的垂直坐标注意:这两个属性在设计阶段不能使用;当使用Cls方法后,CurrentX、CurrentY属性值为0。例:利用CurrentX,CurrentY属性在窗体上输出100个★

PrivateSubForm_paint()'自动执行

DimiAsIntegerRandomizeFori=1To100CurrentX=Form1.Width*RndCurrentY=Form1.Height*RndForm1.ForeColor=RGB(CurrentX*Rnd,CurrentY*Rnd,Form1.Height*Rnd)'置色

Print"★"NextiEndSub2线宽(DrawWidth)属性和线型(DrawStyle)属性

给出在这些对象上所画线的宽度或点的大小,以像素为单位来度量,最小值为1。

DrawWidth属性DrawStyle属性在窗体或图形框或打印机上用它们的的DrawStyle属性给出在这些对象上用画图方法所绘出线的形状(对线和形状控件所绘出的线、框不起作用)。例:

改变DrawStyle属性值在窗体上画出不同形状的线形,通过改变DrawWidth属性值画一系列宽度递增的直线。PrivateSubForm_Click()DimjAsIntegerCurrentX=0'设置开始位置

CurrentY=ScaleHeight/2DrawWidth=1'定义线的宽度为1Forj=0To6DrawStyle=j'定义线的形状

ForeColor=QBColor(j)'设置颜色

Line-Step(ScaleWidth/15,0)'画线NextjForj=1To6DrawWidth=j*3'定义线的宽度

ForeColor=QBColor(j)'设置颜色

Line-Step(ScaleWidth/15,0)'画线

NextjEndSub3填充颜色(FillColor)属性和填充样式(FillStyle)属性FillColor属性

FillColor指定填充图案的颜色,默认的颜色同ForeColor,也可以通过VB中的颜色符号常量(如:vbRed)指定颜色,还可以通过以下颜色函数指定色彩。(1)RGB(红,绿,蓝)函数红、绿、蓝三基色混合产生某种颜色,这三基色的数值范围是0~255之间的整数。从理论上来说,用三基色混合可产生256×256×256种颜色。例如,RGB(0,0,0)返回黑色,RGB(255,255,255)返回白色。(2)QBColor(颜色码)函数

QBColor函数根据颜色码返回一个指定红、绿、蓝三原色的值,用于设置VB中RGB系统的对应颜色。格式:QBColor(value)value:0~7、8~15(为0~7颜色加亮)

颜色码与颜色对照表颜色码RGB颜色颜色码RGB颜色0(0,0,0)黑色8(128,128,128)灰1(0,0,128)蓝9(0,0,255)浅蓝2(0,128,0)绿10(0,255,0)浅绿3(0,128,128)青11(0,255,255)浅青4(128,0,0)红12(255,0,0)浅红5(128,0,128)品红13(255,0,255)浅品红6(128,128,0)黄14(255,255,0)浅黄7(192,192,192)白15(255,255,255)亮白FillStyle属性FillStyle属性设置封闭图形的填充图案样式,共有8种图案设置值常数说明0vbFSSolid以FillColor绘制实心四方形1vbFSTransParent透明(缺省值)2vbHorizontalLine水平线3vbVerticalLine垂直线4vbUpwardDiagonal左上到右下斜线5vbDownwardDiagonal右上到左下斜线6vbCross网状格线7vbDiagonalCross网状斜线9.4图形方法1Pset方法用Pset方法在窗体、图形框和打印机指定位置画点。格式:[<对象>.]PSet[Step](x,y)[,Color]

说明:(1)<对象>为窗体、图片框或打印机,缺省为当前窗体;(2)Step为可选关键字,指定相对于由CurrentX和CurrentY属性提供的当前图形的位置坐标;(3)(x,y)为点的水平和垂直坐标,可以是整数也可以包含小数;(4)Color用于为该点指定颜色,缺省时,使用当前对象的ForeColor属性值。可用RGB函数或QBColor函数指定颜色。

例:

用Pset方法绘制具有动感的阿基米德螺线。

阿基米德螺线,亦称“等速螺线”。当一点P沿动射线OP以等速率运动的同时,这射线有以等角速度绕点O旋转,点P的轨迹称为“阿基米德螺线”。直角坐标系下的坐标值为:

x=rcos(Q)y=rsin(Q)r和Q为极坐标系的坐标PrivateSubForm_activate()Timer1.Interval=100DrawWidth=5'设置点宽和线宽EndSubPrivateSubTimer1_Timer()'定时器事件

DimxAsSingle,yAsSingle,IAsSingleScale(-15,15)-(15,-15)Line(0,14)-(0,-14),vbRed'x轴为红色

Line(14.5,0)-(-14.5,0),vbYellow'y轴为黄色

ForI=0To12Step0.01y=I*Sin(I)'阿基米德螺线参数方程

x=I*Cos(I)'阿基米德螺线参数方程

PSet(x,y),RGB(Rnd*256,Rnd*256,Rnd*256)NextIEndSub界面设计是添加Timer控件2Line方法Line方法用于在指定两点之间用指定的颜色画线或矩形,其语法格式如下:[<对象>.]Line[[Step](x1,y1)]–[Step](x2,y2)[,颜色[,B[F]]]说明:(1)<对象>为窗体、图片框或打印机,缺省为当前窗体;(2)选择前Step,则(x1,y1)是相对坐标,是相对于当前坐标的相对坐标;(3)(x1,y1)为直线或矩形的起点坐标。如果省略,起点为当前坐标;(4)选择后Step,则(x2,y2)是相对坐标,是相对于线的起点的终点坐标;(5)(x2,y2)为直线或矩形的终点坐标;(6)颜色为画线时用的RGB颜色;(7)选B则利用对角坐标画出矩形;(8)F选项规定矩形用矩形边框的颜色填充;(9)Line方法执行完后,(CurrentX,CurrentY)为(x2,y2)。例:用Line方法在一个窗体上画随机射线。OptionExplicitDimk%,Colorcode%,i%,x%,y%PrivateSubForm_Click()DimiAsInteger,xAsSingle,yAsSingleScale(-320,240)-(320,-240)Timer1.Interval=100'定时器EndSubPrivateSubTimer1_Timer()Randomizek=k+1Ifk>30Thenk=0Cls'每执行30次定时器事件清屏一次

Fori=1To100x=320*Rnd'产生x坐标

IfRnd<0.5Thenx=-xy=240*Rnd'产生y坐标

IfRnd<0.5Theny=-yColorcode=15*Rnd'产生色彩代码

Line(0,0)-(x,y),QBColor(Colorcode)'画线

NextiEndSub界面设计是添加Timer控件3Circle方法Circle方法可以在对象上画圆、椭圆或圆弧,格式为:[<对象>.]Circle[Step](x,y),半径,[颜色],[起始角],[终止角][,纵横比]说明:(1)<对象>为窗体、图片框或打印机,缺省为当前窗体;(2)(x,y)是指圆、椭圆或弧的中心坐标;(3)Step说明(x,y)是相对坐标,相对于当前坐标的相对坐标;(4)半径是指圆、椭圆或弧的半径,为最长轴的尺寸;(5)颜色是指圆的轮廓颜色,省略则使用ForeColor值;(6)起始角,终止角是指以弧度为单位,范围[-2

,2

],指定弧或扇形的起点和终点位置。起点的缺省值是0,终点的缺省值是2

,若为负数,在画弧的同时画圆心到弧端点的连线;(7)纵横比是圆的纵横尺寸比,缺省值为1.0(标准圆)。注意:Circle方法总是沿逆时针方向绘图,在省略参数时,逗号是不可缺省的,但如果画圆或圆弧,则后面的参数及逗号可以省略。例:用Circle方法画一个四个区域不同颜色的圆。OptionExplicitConstPiAsSingle=3.1415926PrivateSubForm_activate()Picture1.Scale(-50,50)-(50,-50)Picture1.FillStyle=vbFSSolid'实心填充

Picture1.FillColor=vbRedPicture1.Circle(0,0),40,vbRed,-Pi,-Pi/2Picture1.FillColor=vbGreenPicture1.Circle(0,0),40,vbGreen,-Pi/2,-PiPicture1.FillColor=vbBluePicture1.Circle(0,0),40,vbBlue,-Pi,-Pi*3/2Picture1.FillColor=vbYellowPicture1.Circle(0,0),40,vbYellow,-3*Pi/2,-2*PiEndSub4与作图相关的其他常用属性、方法和事件AutoRedraw属性

使用如Print、PSet、Line和Circle方法,在改变对象大小或隐藏在另一个对象后又重新显示的情况下,设置AutoRedraw为True,将在Form或PictureBox控件中自动重绘输出。运行时在程序中设置AutoRedraw,可以在画持久图形(如背景色或网格)和临时图形之间切换。如果设置AutoRedraw为True,以前的输出成为背景屏幕的一部分。将AutoRedraw设置为False后,用Cls方法清除绘图区时不会删除背景图形。把AutoRedraw改回True后,再用Cls将清除背景图形。Cls方法

功能:清除运行时Form或PictureBox所生成的图形和文本。格式:[<对象>].Cls(对象为窗体或图片框

)注意:(1)Cls的功能受AutoRedraw的影响。(2)调用Cls之后,对象的CurrentX和CurrentY属性复位为0。功能:用于在Form,PictureBox或Printer上绘制出图形文件的内容,括.bmp,.wmf,.emf,.cur,.ico等语法格式为:[<对象>.]PaintPicture图像,x1,y1,[宽度1],[高度1],[x2],[y2],[宽度2],[高度2],[位操作常数]

说明:(1)<对象>:为窗体、图片框或打印机,缺省为当前窗体;(2)图像:为传送源对象,可以是图形框、图像框或窗体的Picture属性。(3)x1,y1:是传送目标矩形区域左上角坐标(目标控件内任一位置)。

(4)宽度1,高度1:目标图像的宽度或高度。(5)x2,y2:指图像源上需要截取供绘制的区域的左上角坐标;(6)宽度2,高度2:指图像源上截取区域的宽度或高度;(7)位操作常数:用来定义在将图像绘制到对象上时执行的位操作。PaintPicture方法

位操作常数表常数描述vbDstInvert目标位图取反。vbMergeCopy合并模式和源位置。vbMergePaint源位图取反,再和目标位图进行“或”操作。vbSrcInvert源位图与目标位图进行“异或”操作。vbSrcPaint源位图与目标位图进行“或”操作。vbNotSrcCopy将源位图取反复制到目标中。vbNotSrcErase源位图与目标位图进行“或非”操作。vbPatCopy将模式复制到目标位图。vbPatInvert用Xor运算合并目标位图与模式。vbPatPaint用Or运算合并反转的源位图与模式,然后用Or运算合并上述结果与目标位图。vbSrcAnd目标位图和源位图进行“与”操作。vbSrcCopy源位图直接覆盖目标位图。vbSrcErase目标位图取反,再和源位图进行“与”操作。Point方法用于返回指定点的RGB颜色。语法格式:[<对象>.]Point(x,y)如果由(x,y)指定的点在对象外面,Point方法返回-1(False)。Point方法例:用Point方法获取一个区域的信息,并使用Pset方法进行仿真。PrivateSubForm_click()Dimi,jAsInteger,mcolorAsLongForm1.Scale(0,0)-(100,100)'设置窗体坐标系

Picture1.Scale(0,0)-(100,100)'设置图形框坐标系

ClsPicture1.ClsForm1.DrawWidth=3'窗体画点宽度为3Picture1.ForeColor=RGB(255,0,255)Picture1.Print"用Point方法获取信息"Fori=1To150Forj=1To150mcolor=Picture1.Point(i,j)'获取图片框中每个点的颜色

'如果是字点,则用黄色在窗体上显示该点

Ifmcolor=RGB(255,0,255)ThenPSet(i,j),vbYellowNextjNextiEndSub在应用程序运行时,当一个对象被移动或改变大小之后;或当一个覆盖该对象的窗体被移开之后,如果要保持该对象上所画图形的完整性(重现原来的图形),可以选择触发Paint事件来完成图形的重画工作。如果AutoRedraw属性被设置为True,重新绘图将会自动进行,此时Paint事件无效。使用Refresh方法时,Paint事件即被自动调用。在Resize事件过程中调用Refresh方法,强制使用Paint事件重画图形。Point事件9.5

综合应用几何图形绘制例:用PSet方法在窗体上绘制由多个点来组成一条螺线。PrivateSubForm_Click()DimiAsSingleScale(-15,15)-(15,-15)Line(0,14)-(0,-14)Line(14,0)-(-14,0)Form1.DrawWidth=2Fori=0To12Step0.01X=i*Cos(i)Y=i*Sin(i)Form1.ForeColor=QBColor(i*100Mod16)PSet(X,Y)NextiEndSub简单动画设计界面设计:在窗体上添加一个命令按钮Command1,4个形态

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论