VB程序设计 第十章 图形操作.doc_第1页
VB程序设计 第十章 图形操作.doc_第2页
VB程序设计 第十章 图形操作.doc_第3页
VB程序设计 第十章 图形操作.doc_第4页
VB程序设计 第十章 图形操作.doc_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

第十章 图 形 操 作 第 36 页 共 36 页第十章 图 形 操 作主要内容l 图形操作基础l 绘图属性l 图形控件l 图形方法l 应用图形操作基础要点默认坐标系坐标系-用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种)图形控件要点:PictureBox(图形框) 重要属性 Autosize、 Picture 装入图形方法LoadPictureImage(图像框) 重要属性 Stretch 、Picture 装入图形方法LoadPictureShape(形状) 重要属性 Shap 图形几何形状Line(画线工具)图形方法Pset 画点Line 画线Cricle 画圆Point 取点的颜色值应用要点:几何图形绘制简单动画设计图形漫游图形处理技术改变窗体外观加入后台音乐10.1 图形操作基础Visual Basic提供的图形控件主要有Picture Box(图形框)、Image(图像框)、Line(画线控件)、Shape(形状控件)。提供的图形方法有Line、Circle、Pset和Point等。为了方便图形操作,Visual Basic提供了系统标准坐标系和用户自定义坐标系两种方式的坐标系。10.1.1 坐标系统 每个容器都有一个坐标系,构成一个坐标系,需要三个要素:坐标原点、坐标度量单位、坐标轴的长度与方向。属性 ScaleTop、ScaleLeft用于控制容器对象左边和顶端的坐标,根据这两个值来确定坐标原点。所有对象的这两个属性的默认值为0,即坐标原点在对象的左上角。属性 ScaleHeight和ScaleWidth确定对象内部水平方向和垂直方向的单元数。属性ScaleMode决定容器对象的坐标度量单位。坐标系单位有8种形式。缺省单位是Twip。每英寸1440个Twip,20个Twip为一磅。ScaleMode属性设置一览表属性设置单位0用户定义(User)1twip(默认值)2磅(point,每英寸72磅)3像素(pixed,与显示器分辨率有关)4字符(默认高为12磅,宽20磅的单位)5英寸(inch)6毫米(millimeter)7厘米(centimeter)度量单位转换使用 ScaleX和ScaleY方法,格式如下:对象.ScaleX(转换值,原坐标单位,转换坐标单位)对象.ScaleY(转换值,原坐标单位,转换坐标单位)Private Sub Form_Load()x = ScaleX(45, 1, 7) 将45由Twip转换成厘米 7.937508E-02y = ScaleY(45, 1, 6) 将45由Twip转换成毫米0.7937508MsgBox x & & yEnd Sub无论采用那种坐标度量单位,默认坐标原点在对象的左上角,横向向右为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在myvbvb10ex10_1lbc10_1.vbpPrivate Sub Form_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: Print 0 标记坐标原点 CurrentX = 280: CurrentY = 40: Print X 标记X轴 CurrentX = 5: CurrentY = 240: Print Y 标记Y轴End Sub说明:可在程序中使用Scale方法改变坐标系统。当Scale方法不带参数时,取消用户定义的坐标系,恢复缺省坐标系。改变坐标系后产生的影响:例10.1a 观察画线Line(0,0) - (1000,1000) 在不同坐标系中的效果例10.1a在myvbvb10ex10_1albc10_1a.vpbPrivate Sub Command1_Click() 缺省坐标ClsScale 采用缺省坐标系缺省坐标系(xLeft,yTop)=(ScaleTop,ScaleLeft)=(0,0)(xRight,yBottom)=(ScaleLeft+ScaleWidt,ScaleTop+ScaleHeight)=(4680,3195)Line (0, 0)-(1000, 1000)End SubPrivate Sub Command2_Click() 用户定义ClsForm1.Scale (0, 1000)-(1000, 0) 定义用户坐标系Line (0, 0)-(1000, 1000)End Sub例10.1b 控件对象在坐标系内与X轴和Y轴的位置保持相对不变例10.1b在myvbvb10ex10_1blbc10_1b.vpbPrivate Sub Coordinate() Cls Line (0, 0)-(5400, 0) 画线 Line (0, 0)-(0, 3800) Label1.Caption = Form.ScaleLeft= & Form1.ScaleLeft & vbCrLf _ & Form.ScaleTop = & Form1.ScaleTop Picture1.Top = 1080: Picture1.Left = 1080 label2.Caption=0,label3.Caption=Y,label4.Caption=X,vbCrLf相当于chr(13) Label2.Top = 120: Label2.Left = 120 Label3.Top = 3240: Label3.Left = 120 Label4.Top = 120: Label4.Left = 5340End SubPrivate Sub Command1_Click() 左移 结果坐标轴线和图形框向左上角推进渐渐从窗体上消失 Form1.ScaleLeft = 100 + Form1.ScaleLeft 改变坐标系统 Form1.ScaleTop = 100 + Form1.ScaleTop Coordinate 调用子过程End SubPrivate Sub Command2_Click() 右移 结果坐标轴线和图形框向右下角推进渐渐从窗体上消失 Form1.ScaleLeft = Form1.ScaleLeft 100 改变坐标系统 Form1.ScaleTop = Form1.ScaleTop - 100 Coordinate 调用子过程End Sub10.1.3 图形层VB在构造图形时,在三个不同的屏幕层次上放置图形的可视组成部分。就视觉效果而言,最上层离用户最近,而最下层离用户最远。图形层放置的对象一览表层次对象类型最上层工具箱中除标签、线条、形状,image外的控件对象中间层标签、线条、形状控件对象和image最下层由图形方法所绘制的图形位于上层的对象会覆盖下层相同位置的任何对象,即使下层对象在上层对象后面绘制。处于同一图形层的对象的叠放顺序与操作有关,后绘在前绘上面。同一图形层内控件对象排列顺序称为Z序列。设计时可通过格式菜单中的顺序命令调整Z序列。运行时可通过Zorder方法将特定的对象调整到同一图层的前面或后面。如果控件不属于同一层,则Zorder方法无效。Zorder方法的语法格式为: 对象.Zorder positionposition =0 表示该控件被定位于Z序列的前面position = 1表示该控件被定位于Z序列的后面 例10.2 Zorder方法的使用例10.2在myvbvb10ex10_2lbc10_2.vpbPrivate Sub Command1_Click(Index As Integer) command1为命令按钮组 Command1(Index).ZOrder 0 单击哪个按钮,哪个按钮就在最前面出现End SubPrivate Sub Form_Load() Dim i For i = 1 To 4 Load Command1(i) 设计命令按钮组 Command1(i).ToolTipText = Command & i 给按钮加提示 Command1(i).Left = Command1(i - 1).Left + 250 确定出现位置 Command1(i).Top = Command1(i - 1).Top + 300 Command1(i).Visible = True 使其可见 Command1(0).Style = 1 命令按钮可以加载图标只允许在属性窗口设置 Select Case i Case 1 Command1(i).Picture = LoadPicture(App.Path + Cut.bmp) Case 2 Command1(i).Picture = LoadPicture(App.Path + copy.bmp) Case 3 Command1(i).Picture = LoadPicture(App.Path + paste.bmp) Case 4 Command1(i).Picture = LoadPicture(App.Path + OPEN.bmp) End Select Next i Command1(0).Picture = LoadPicture(App.Path + save.bmp) Command1(0).ToolTipText = Command0End Sub例10.2b 设计一个开关。先画一个picture1控件在窗体上然后将开关(ON)图标装入Picture1内,因此Picture1控件的层次关系属于最底层,再在窗体上画一个picture2控件然后将开关(OFF)图标装入Picture2内,因此,Picture2对Picture1来说,图层属于上层。这样,无论你怎样移动这两个控件OFF始终覆盖ON(只要重叠)。例10.2b在myvbvb10ex10_2blbc10_2b.vpbPrivate Sub Picture1_Click() ON 开关(红色) Picture2.ZOrder 0 呈现白开关 Image2.ZOrder 0 呈现白灯End SubPrivate Sub Picture2_Click() OFF 开关(白色) Picture1.ZOrder 0 呈现红开关 Image1.ZOrder 0 呈现黄灯End Sub10.2 绘图属性10.2.1 当前坐标 CurrentX,CurrentY属性给出窗体或图形框或打印机在绘图时的当前坐标。这两个属性在设计阶段不能使用。坐标(x,y)表示所在对象的绝对坐标,而Step( x, y)则表示在对象上的相对坐标位置,即从当前坐标平移x,y个单位,其绝对坐标为(CurrentX+x,CurrentY+y)。 使用Cls方法后,CurrentX=0,CurrentY=0例10.3利用CurrentX,CurrentY属性在窗体上输出100个。例10.3在myvbvb10ex10_3lbc10_3.vpbPrivate Sub Form_paint() 自动执行 Dim i As Integer Randomize 语句,每次运行产生不同序列的随机数 For i = 1 To 100 CurrentX = Form1.Width * Rnd CurrentY = Form1.Height * RndForm1.ForeColor = RGB(CurrentX* Rnd, CurrentY* Rnd, Form1.Height * Rnd) 置色 Print Next iEnd Sub6.2.2 线宽与线型窗体、图形框或打印机的DrawWidth属性给出在这些对象上所画线的宽度或点的大小。DrawWidth属性以像素为单位来度量,最小值为1。在窗体或图形框或打印机上用它们的的DrawStyle属性给出在这些对象上用画图方法所绘出线的形状(对线和形状控件所绘出的线、框不起作用)。DrawStyle属性设置一览表设置值常量线 型图 示0vbSolid实线(缺省)1vbDash长划线2vbDot点线3vbDashDot点划线4vbDashDotDot点点划线5vbInvisible透明线6vbInsideSolid内实线以上线型仅当DrawWidth属性值为1时才能产生。当DrawWidth的值大于1且DrawStyle的值为1-4,都只能产生实线效果,而DrawStyle=6时,所画的内实线仅当是封闭线时起作用。使用图形控件,则是通过BorderWidth属性定义线的宽度或点的大小,通过BorderStyle属性给出所画线的形状。使用bordercolor属性置线色例10.4 线状示例(DrawWidth 和 DrawStyle)例10.4在myvbvb10ex10_4lbc10_4.vpbPrivate Sub Form_load() Dim i%, y%, a%(0 To 6) a(0) = vbSolid: a(1) = vbDash: a(2) = vbDot 赋线状常数 a(3) = vbDashDot: a(4) = vbDashDotDot: a(5) = vbInvisible a(6) = vbInsideSolid Form1.AutoRedraw = True 使用load事件必须有,否则不可画出线 DrawWidth = 1 置线宽 For i = 0 To 6 DrawStyle = a(i) 置线状(即实、点、长点等线) y = (300 * i) + 200 Form1.ForeColor = QBColor(i) 置色 Line (300, y)-(3000, y) CurrentX = 3020 Print i; a(i); Choose(i + 1, vbSolid, vbDash, _ vbDot, vbDashDot, vbDashDotDot, vbInvisible, vbInsideSolid) Next i 从输出结果看,a(i)内是0-6的整数值 Line (100, 2500)-(4000, 2500) DrawWidth = 10 置线宽 Form1.ForeColor = RGB(0, 192, 0) Line (400, 2500)-(3000, 2500)End Sub例10.4a 改变DrawStyle属性值在窗体上画出不同形状的线形,通过改变DrawWidth属性值画一系列宽度递增的直线。例10.4a在myvbvb10ex10_4albc10_4a.vpbPrivate Sub Form_Click() Dim j As Integer CurrentX = 0 设置开始位置 CurrentY = ScaleHeight / 2 DrawWidth = 定义线的宽度为1 For j = 0 To 6 DrawStyle = j 定义线的形状 ForeColor = QBColor(j) 设置颜色 Line -Step(ScaleWidth / 15, 0) 画线 ,Y坐标不动,X 坐标相对移动ScaleWidth / 15 Next j For j = 1 To 6 DrawWidth = j * 3 定义线的宽度 ForeColor = QBColor(j) 设置颜色 Line -Step(ScaleWidth / 15, 0) 画线 Next jEnd Sub6.2.3 填充与色彩用图形方法绘制的封闭图形的填充方式由FillStyle、FillColor这两个属性决定。(对形状控件绘出的封闭图形也适用)FillColor指定填充图案的颜色,默认的颜色同ForeColor。FillStyle指定填充的图案,共有8中内部图案。FillStyle属性设置一览表设置值常 数说 明0vbFSSolid以FillColor绘制实心四方形1vbFSTransParent透明(缺省值)2vbHorizontalLine水平线3vbVerticalLine垂直线4vbUpwardDiagonal左上到右下斜线5vbDownwardDiagonal右上到左下斜线6vbCross网状格线7vbDiagonalCross网状斜线例10.5 八种填充图案示例(用Line方法作图)例10.5在myvbvb10ex10_5lbc10_5.vpbDim x0%, x1%, y0%, k%, y1%Private Sub mnuClean_Click() 擦除 Cls x0 = 200: x1 = 800: k = 100: y0 = 200: y1 = 800End SubPrivate Sub Form_Load() 准备初值 x0 = 200: x1 = 800: k = 100: y0 = 200: y1 = 800End SubPrivate Sub mnufillColor_Click() 填充色 CommonDialog1.ShowColor Form1.FillColor = CommonDialog1.ColorEnd SubPrivate Sub mnuvbCross_Click() 网状格线FillStyle = vbCrossdraw vbCrossEnd SubPrivate Sub mnuvbDiagonalCross_Click() 网状斜线FillStyle = vbDiagonalCrossdraw vbDiagonalCrossEnd SubPrivate Sub mnuvbDownwardDiagonal_Click() 右上到左下斜线FillStyle = vbDownwardDiagonaldraw vbDownwardDiagonalEnd SubPrivate Sub mnuvbFSTransparent_Click() 透明 (缺省值) FillStyle = vbFSTransparent draw vbFSTransparentEnd SubPrivate Sub mnuvbHorizontalLine_Click() 水平线 FillStyle = vbHorizontalLine draw vbHorizontalLineEnd SubPrivate Sub mnuvbFSSolid_Click(Index As Integer) 以FillColor绘制实心四方形 FillStyle = vbFSSolid draw vbFSSolidEnd SubPrivate Sub mnuvbUpwardDiagonal_Click() 左上到右下斜线 FillStyle = vbUpwardDiagonal draw vbUpwardDiagonalEnd SubPrivate Sub mnuvbVerticalLine_Click() 垂直线 FillStyle = vbVerticalLine draw vbVerticalLineEnd SubPublic Sub draw(x%) 绘图公用过程 Line (x0 + k, y0)-(x1, y1), , B FF如果有参数F则以边框线色为填充色,结果为色块图形,选择的填充色无效,填充线状失效。 CurrentX = x0 + (x1 - x0) 2: CurrentY = y1 + 20 Print x x0 = x1: x1 = x0 + 500End SubVisual Basic 默认采用对象的前景色(ForeColor属性)绘图,也可以通过以下颜色函数指定色彩。1. RGB(红,绿,蓝)函数 红、绿、蓝三基色混合产生某种颜色。红、绿、蓝三色的数值范围是0255之间的整数。例如:RGB(0,0,0)返回黑色,RGB(255,255,255)返回白色。由于受硬件的影响,普通VGA显示卡只能显示16种颜色。2. QBColor(颜色码) 这个函数采用QuickBasic所使用的16种颜色。 颜色码使用015之间的整数。颜色码与颜色对应表颜色码RGB颜色常量颜色码RGB颜色常量0(0,0,0)黑色vbBlack8(128,128,128)灰1(0,0,128)蓝无9(0,0,255)浅蓝vbBlue2(0,128,0)绿无10(0,255,0)浅绿vbGreen3(0,128,128)青无11(0,255,255)浅青vbCyan4(128,0,0)红无12(255,0,0)浅红vbRed5(128,0,128)品红无13(255,0,255)浅品红vbMagenta6(128,128, 0)黄无14(255,255,0)浅黄vbYellow7(192,192, 192)白无15(255,255,255)亮白vbWhite例10.5a 颜色的渐变过程。例10.5a在myvbvb10ex10_5albc10_5a.vpbDim j As Integer, x As SinglePrivate Sub Form_Click() 单击触发定时器事件 Cls Timer1.Interval = 100End SubPrivate Sub Timer1_Timer() x = Form1.Width 设置画线的另一端在窗体的右边界 Form1.DrawWidth = 10 设置画线线宽 Line (0, j * 10)-(x, j * 10), RGB(j, 0, 0) 用色画线 j = j + 1End Sub10.3 图形控件VB提供的四个基本绘图控件可以简化与图形有关的操作。每个控件都适用一个特定的目的。Image、Shape、Line控件需要较少的系统资源,且包含PictureBox中可用的属性、方法、和事件子集,因此他们比PictureBox控件显示的快。 VB提供的图像框和图形框可以显示位图、图标、图元文件中的图形,也可处理GIF和JPEG格式的图形文件。位图(Bitmap)是将图像定义为像素的图案。位图文件的扩展名是.BMP或.did。位图可使用多种颜色深度:包括2,4,8,16,24,32位的颜色深度,但正确显示颜色深度需要硬件的支持。例如每像素8比特(256色)的位图在每像素4比特(16色)的设备上只能显示出16种颜色。图标文件是特殊类型的位图。图标的最大尺寸为32像素32像素,但在Windows9X下,图标也可为1616像素大小。图标文件的扩展名为.ico或.cur。图元文件(Metafile)是将图形定义为编码的线段和图形。普通图元文件的扩展名为.wmf。增强型图元文件的扩展名为.emf。VB只能加载与Windows兼容的图元文件。GIF(Graphics Interchange Format)是最初由CompuServe开发的一中压缩位图格式。该格式可支持多达256种的颜色,它是Internet上一种流行的文件格式,其扩展名为.gif。JPEG(Joint Photographics Expert Group)是一种支持8位和24位颜色的压缩位图格式。也是Internet上经常使用的一种文件格式,其扩展名为.jpg。10.3.1 Picture Box(图形框)它的主要作用是为显示图片、也可作为其他控件的容器。实际显示的图片由Picture属性决定。在程序中可用:图形框对象.Picture = LoadPicture(“图形文件名”)装入图形。也可用:图形框对象.Picture = LoadPicture(”) 删除已装入的图形。图形框的Autosize属性设置为True时,图形框能自动调整自身大小以适应装入的图片大小。而如果设置False(默认值),则装入的图形尺寸大于图形框,则自动裁减多余的图形部分,反之,图形框的空余部分闲置不用。 图形框也可放入其它控件。这些控件随PictureBox移动而移动,其Top和Left属性则相对于PictureBox控件而言。10.3.2 Image(图像框)图像框比图形框占用更少的内存块。图像框内不能容纳其他控件。图像框没有AutoSize属性。而它的Stretch属性默认值为False,这时图像框自动调整大小以适应装入图形的大小。当Stretch的属性值设置为True时,装入图像框中的图形可自动改变自身大小以适应图像控件的大小。例10.6 图形框Autosize属性与图像框的Stretch属性对加载图形的影响。 例10.6 在myvbvb10ex10_6lbc10_6.vpb说明:在设计时,将属性窗口中的pictureBox的AutoSize设为False,ImageBox的Stretch设为True,且将AutoSize复选框选定而Stretch复选框不选定。本题设计了两个窗体,分别演示图像框和图形框,同时还有装入图形命令按钮,供装入不同尺寸图形的需要。通过按下鼠标键并移动鼠标还能放大和缩小图形(像)控件的大小,便于观察属性,控件尺寸和图大小的关系。两个控件的设计尺寸为Width = 1440 ,Height = 1200Form1窗体代码Private Sub Check1_Click() AutoSize属性Private Sub Check1_Click() Picture1.AutoSize = Not Picture1.AutoSize If Picture1.AutoSize Then Me.ActiveControl.Caption = True Else Me.ActiveControl.Caption = False Picture1.Width = 1440 恢复设计时大小 Picture1.Height = 1200 End IfEnd SubEnd SubForm2窗体代码Private Sub Check1_Click() Stretch 属性 Image1.Stretch = Not Image1.Stretch If Image1.Stretch Then Me.ActiveControl.Caption = True Image1.Width = 1440 恢复设计时的大小 Image1.Height = 1200 Else Me.ActiveControl.Caption = False End IfEnd SubEnd Sub对于绘制或装载在窗体、图形框和图像框内的图形,可保存到Bmp格式文件内。使用的命令格式:SavePicture对象名.属性,文件名对象名可以图形框或图像框控件名,属性可以是picture或image(图片框控件的image属性不在属性窗口中图像框控件无此属性)SavePicture命令只支持bmp格式的文件10.3.3 Line(直线控件) Line控件可以用来画线,它的重要属性是BorderWidth和BorderStyle属性。BorderWidth确定线的宽度(默认值1),BorderStyle确定线的形状(默认值为1实线)。Line控件还有属性x1,y1和x2,y2,他们控制线的两个端点的位置。BorderStyle属性一览表值形状0Transparent 透明(不可见)1Solid 实线2Dash 长线3Dot 短线4Dash-Dot 长短线5Dash-Dot-Dot 长短短线6Inside-Solid 内实线例10.7 利用直线控件做一个类似雷达扫描的效果图。例10.7 在myvbvb10ex10_7lbc10_7.vpbDim i%, LineLength%Private Sub Form_load() LineLength = Line1.X2 - Line1.X1 i = 10 每间隔10度,修改一次直线控件放置位置 DrawWidth = 10 画圆周线的线宽 Line1.BorderWidth = 5 直线控件的宽度 Line1.BorderColor = RGB(0, 255, 0) 直线控件的颜色End SubPrivate Sub Timer1_Timer() 定时器事件 Circle (Line1.X1, Line1.Y1), LineLength + 170, RGB(i, 0, i) 园环色渐变 Line1.X2 = Line1.X1 + LineLength * Cos(i * 3.14159 / 180) Line1.Y2 = Line1.Y1 + LineLength * Sin(i * 3.14159 / 180) i = i + 10 If i = 360 Then i = 10End Sub10.3.4 Shape(形状控件)利用形状控件可以画矩形、正方形、椭圆、园、园角矩形及园角正方形。形状控件的重要属性Shape,它可确定所画的几何图形形状。用FillStyle属性给指定形状填充不同方向线图案,用FillColor属性将指定形状的填充图案着色。用BorderColor属性给指定形状边框着色。用BorderStyle属性给指定形状边框置线型。Shape 属性一览表值常量几何图形0vbShapeRectangle矩形(缺省)1vbShapeSquare正方形2vbShapeOval椭圆3vbShapeCircle圆形4vbShapeRoundRectangle圆角矩形5vbShapeRoundSquare圆角正方形例10.8 Shape属性示例。例10.8 在myvbvb10ex10_8lbc10_8.vpbPrivate Sub Form_Activate() Dim i Print 0(矩形) 1(正方形) 2(椭圆) 3(圆) 4(四角圆画矩形) 5(四角圆画正方形) Print 0 1 2 3 4 5 Shape1(0).Shape = 0 Shape1(i).FillStyle = 2 水平线填充 For i = 1 To 5 Load Shape1(i) 产生一个控件数组元素 Shape1(i).Left = Shape1(i - 1).Left + 750 确定新元素的位置 Shape1(i).Shape = i 确定控件外形 Shape1(i).FillStyle = i + 2 设置填充线状 Shape1(i).Visible = True Next iEnd Sub例10.9 利用Shape控件数组模拟五环旗。例10.9 在myvbvb10ex10_9lbc10_9.vpbPrivate Sub Form_Load() Dim mtop As Integer, mleft As Integer, i As Integer, j As Integer, k As Integer Dim mc As Integer mtop = Shape1(0).Top mleft = Shape1(0).Left + Shape1(0).Width For i = 1 To 2 For j = 1 To 2 k = (i - 1) * 2 + j Load Shape1(k) Select Case k 设置颜色 Case 1 mc = 0 vbBlack Shap1(0)属性中设置为蓝色 Case 2 mc = 12 vbRed Case 3 mc = 14 vbYellow 下一行图案 Case 4 mc = 11 vbCyle 浅青 下一行图案 End Select Shape1(k).BorderColor = QBColor(mc) Shape1(k).Visible = True Shape1(k).Top = mtop Shape1(k).Left = mleft mleft = mleft + Shape1(0).Width 下一列位置 Next j mtop = mtop + Shape1(0).Width / 2 下一行位置 mleft = Shape1(0).Left + Shape1(0).Width / 2 Next iEnd Sub10.4 图形方法10.4.1 Line方法Line方法用于画直线或矩形。格式:对象. Line Step (x1,y1)Step(x2,y2),颜色,BF其中:对象可以是窗体或图形框,默认为窗体。(x1,y1) ,(x2,y2)为线段的起终点坐标或矩形的左上角右下坐标。B表示画矩形,关键字F表示用画矩形的颜色来填充矩形。Step 表示采用当前作图位置的相对值。在窗体的load时件中使用Line方法在窗体上画图时,窗体的AutoReDraw必须设置为True。而在窗体的Paint事件中就不需要。例10.10 用Line方法在一个窗体上画坐标轴与坐标刻度。例10.10 在myvbvb10ex10_10lbc10_10.vpbPrivate Sub Form_Click() Cls Form1.Scale (-110, 110)-(110, -110) 定义坐标系 Line (-105, 0)-(105, 0): Line (0, 105)-(0, -105) 画X轴与Y轴 CurrentX = 105: CurrentY = 20: Print X CurrentX = 10: CurrentY = 105: Print Y For i = -100 To 100 Step 20 在X轴上标记坐标刻度 If i 0 Then CurrentX = i: CurrentY = 7: Line -(i, 0) CurrentX = i - 5: CurrentY = -5: Print i / 10 Else CurrentX = -3: Cur

温馨提示

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

评论

0/150

提交评论