1 / 32

9.1 图形操作基础

第 9 章 Visual Basic 6.0 图形处理. 9.1 图形操作基础. 9.2 图形控件. 9.3 图形方法. 退出. 9.1 图形操作基础. 9.1.1 坐标系统. 9.1.2 自定义坐标系. 9.1.3 使用 Visual Basic 颜色. 9.1.1 坐标系统. 构成一个坐标系,需要三个要素:坐标原点、坐标度量单位、坐标轴的长度与方向。坐标度量单位由容器对象的 ScaleMode 属性决定。. 表 6 . 1 ScaleMode 属性设置. 9.1.2 自定义坐标系. VB 中有两种方法用于坐标系的定义。.

rupert
Download Presentation

9.1 图形操作基础

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第9章Visual Basic 6.0图形处理 9.1 图形操作基础 9.2 图形控件 9.3 图形方法 退出

  2. 9.1 图形操作基础 9.1.1 坐标系统 9.1.2 自定义坐标系 9.1.3 使用Visual Basic颜色

  3. 9.1.1 坐标系统 构成一个坐标系,需要三个要素:坐标原点、坐标度量单位、坐标轴的长度与方向。坐标度量单位由容器对象的ScaleMode属性决定。 • 表6.1 ScaleMode属性设置

  4. 9.1.2 自定义坐标系 VB中有两种方法用于坐标系的定义。 方法一:通过对象的ScaleTop、ScaleLeft、ScaleWidth和ScaleHeigh四项属性来实现。它们不仅可以用来设置标度系统,而且可以用于获取当前标度系统的信息。 方法二:采用Scale方法来设置坐标系。该方法是建立用户坐标系最方便的方法,其语法如下: [对象.]Scale[(xLeft,yTOp)-(xRight,yBotton)]

  5. [例9-1]本例用窗体内两个命令按钮的单击事件说明用Scale方法改变坐标系统后产生的影响,命令Line(0,0)-(1500,1500)表示从坐标原点到(1500,1500)画一根直线。[例9-1]本例用窗体内两个命令按钮的单击事件说明用Scale方法改变坐标系统后产生的影响,命令Line(0,0)-(1500,1500)表示从坐标原点到(1500,1500)画一根直线。 Private Sub Command1_Click() Cls Form1.Scale ’采用缺省坐标系 Line (0, 0)-(1500, 1500) End Sub Commandl_Click事件采用缺省坐标系,坐标原点在窗体的左上角,此时,Height=3600,Width=4800,ScaleHeight=3195,ScaleWidth=4680(twip) Private Sub Command2_Click() Cls Form1.Scale (0, 1500)-(1500, 0) ’定义用户坐标系 Line (0, 0)-(1500, 1500) End Sub Command2_Click事件定义用户坐标系,坐标原点在窗体的左下角,X轴的正向向左,Y轴的正向向上,窗体的左上角坐标为(0,1500),右下角坐标为(1500,0)。此时,Height=3600,Width=4800,ScaleHeight=-1500,ScaleWidth=1500(twip)。 程序运行后,单击Commandl,结果如图6.1中左图所示,单击Command2,结果如图9-1中右图所示。

  6. 图9-1 改变坐标系产生的影响

  7. 9.1.3 使用Visual Basic颜色 Visual Basic提供了两个选择颜色函数QBColor和RGB,其中QBColor函数能够选择16种颜色: • 表9-2 QBColor函数可选择的颜色 RGB函数能够选择更多的颜色,此函数有三个参数。语法格式如下: RGB(R,G,B)

  8. 9.2 图形控件 9.2.1 Line(画线工具) 9.2.2 Shape(形状) 9.2.3 图像框(Image)控件 9.2.4 图片框(Picture Box)控件 返回 退出

  9. 9.2.1 Line(画线工具) 使用线条控件的操作步骤: • (1)单击工具箱中的Line图标; • (2)移动鼠标到要画线的起始位置: • (3)按下鼠标左键并拖曳鼠标到要画线的结束处,放开鼠标左键。 • (4)打开属性窗口,设置线条属性,如线条风格、线条颜色等。 • (5)需要对设置好的线条进行调整时,可再单击该线条,通过鼠标的拖动来改变线条的大小或位置,或通过属性窗口来改变属性值。

  10. 线条控件的主要属性: 1) BorderStyle属性:设置线条的类型。各个属性值代表的线条类型如下: 0 透明线 1 实心线 2 长划线 3 点线 4 点划线 5 点点相间的长划线 6 内部实线 如图9-2是BorderStyle属性设置为不同值时线条的形状。 图9-2 BorderStyle属性设置为不同值时线条的形状

  11. 2) BorderWidth属性:设置线条的宽度,即线条的粗细。 BorderWidth属性受BorderStyle属性设置的影响,不同BorderStyle属性线条的BorderWidth计算方式不同,如表9-3所示。 表6.3 BorderStyle属性对BorderWidth属性的影响 如果BorderWidth属性设置值大于1,则BorderStyle属性的有效值是1(实心线)和6(内部实线),因为点划线的线宽不能大于一个像素。也就是说,对于BorderStyle属性为2~4的线条控件,如果设置BorderStyle属性值大于1,则其表现形式会同实心线一样。 3)BorderColor属性设置线条的颜色。

  12. 9.2.2 Shape(形状) Shape控件可以用来画矩形、正方形、椭圆、圆、圆角矩形及圆角正方形。当Shape控件放到窗体时显示为一个矩形,通过Shape属性可确定所需要的几何形状。 • 使用形状控件的操作步骤: (1)单击工具箱中的Shape控件按钮。 (2)在窗体上画出形状。 (3)设置属性,定制形状的外观。 (4)调整设置好形状。可单击形状使其成为可编辑状态,通过鼠标拖动改变其大小和位置,再用属性窗口设置属性,使其符合要求。

  13. 形状控件的主要属性: 1)Shape属性:设置其显示形状。如表9-4所示。 2)FillStyle属性:设置FillStyle属性可以构成不同的填充效果。FillStyle属性可以在0-7之间取值。如表9-5所示。 表9-4 形状控件的Shape属性 表9-5 形状控件的FillStyle属性

  14. [例9-2] 本例显示Shape控件的6种形状,如图6.3所示。 Private Sub Form_Activate() Dim i As Integer 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 i End Sub 图6.3 Shape属性确定的形状

  15. 9.2.3 图像框(Image)控件 图像框控件是Visual Basic提供的一种显示图像的控件,它可以从文件中装入并显示下面几种格式的图形:位图、图标、图元文件、增强型图元文件、JPEG和GIF文件。除此之外,图像框控件还响应Click事件,并可用图像框控件代替命令按钮或作为工具条的内容。此外,它还可以用来制作简单动画。图像框两个比较重要的属性是Stretch和Picture。 • Stretch属性 • 当Stretch属性设置为True时,所装入的图形能够自动缩放以适应图像框的大小。

  16. Picture属性 • Picture属性与图像数据有关。为显示一幅图像,需要对Picture属性赋值。可以用LoadPicture方法,也可用其他图像框或图片框的图像数据来赋值。下面是使用LoadPicture的例子: • Image1.Picture=LoadPicture(“c:\windows\winupd.ico”) • 把图像框2的图像赋给图像框1的例子是: • Image1.Picture= Image2.Picture • 把图片框1的图像赋给图像框1的例子是 • Image1.Picture= Picture1.Picture

  17. 用图像框控件设计动画程序 • 动画就是一个接一个显示图片的过程。让一系列图片连续显示,利用人视角暂留特性,可以产生动画效果。 • 下面这个程序实现蝴蝶在原地的飞舞。 图9-4 窗体格式

  18. 表9-6 窗体对象属性表

  19. 程序代码如下: Option Explicit Dim gRotateFlag As Integer,gCurrentBtf As Integer Private Sub Command1_Click() If gRotateFlag = 0 Then gRotateFlag = 1:Command1.Caption = "停止(&X)" Else gRotateFlag = 0:Command1.Caption = "开始(&S)" End If End Sub Private Sub Command2_Click() End End Sub Private Sub Form_Load() gRotateFlag = 0:gCurrentBtf = 0 End Sub Private Sub Timer1_Timer() If gRotateFlag = 1 Then Image2.Picture = Image1(gCurrentBtf).Picture:gCurrentBtf = gCurrentBtf + 1 If (gCurrentBtf = 2) Then gCurrentBtf = 0 End If End If End Sub

  20. 9.2.4 图片框(Picture Box)控件 图片框的属性: 1)Picture属性:设置被显示的图片文件名(包括可选的路径名),在程序运行时可以使用LoadPicture()在图形框中装入图形。其格式为: 图形框对象.Picture= LoadPicture(“图形文件名”) 2)Autosize属性:调整图像框的大小以适应图形尺寸。 3)Width和Height属性 这两个属性设置图片框控件的实际大小,它们总是表示空间容器的单位。 4) Left和Top属性 Left和Top属性是图片框控件左上角的坐标,用容器的坐标系表示。 5) ScaleMode属性 ScaleMode属性设置或返回控件的当前坐标系。

  21. 6) SCaleWidth和ScaleHeight属性 这两个属性是当前坐标系单位的控件内部尺寸。 7) ScaleLeft和ScaleTop属性 ScaleLeft和ScaleTop属性是用户定义坐标系中控件左上角的坐标。ScaleLeft是x坐标的最小值,其最大值为ScaleLeft + ScaleWidth。

  22. 9.3 图形方法 9.3.1 PSet方法 9.3.2 Line方法 9.3.3 Circle方法 9.3.4 Point方法 9.3.5 建立绘制曲线的程序 返回 退出

  23. 9.3.1 PSet方法 • PSet方法在指定位置用指定颜色画点。其语法格式如下: [对象].Pset[Step](X,Y)[Color] 其中,对象是使用PSet方法的对象名,可以是窗体和图片框;Step为可选参数,加入此参数表明所画的点位于相对当前点的(X,Y)处;(X,Y)为点的位置坐标;Co1or参数可选,用于设置点的颜色。

  24. [例9-3]:如下图9-5电子贺年卡。使用Pset方法在窗体上画100个大小不同的随机点,点的颜色也随机变化。[例9-3]:如下图9-5电子贺年卡。使用Pset方法在窗体上画100个大小不同的随机点,点的颜色也随机变化。 图9-5 电子贺年卡

  25. Private Sub Command1_Click() Dim M As String Dim X0, Y0, I As Integer ScaleMode = 0 FontSize = 24 M = "新年快乐!" If Command1.Caption <> "退出" Then Command1.Caption = "退出" Cls CurrentX = Form1.Width / 2 - TextWidth(M) / 2 CurrentY = Form1.Height / 2 - TextHeight(M) Print M For I = 1 To 100 DrawWidth = (DrawWidth + 1) Mod 10 + 1 X0 = ScaleHeight * Rnd Y0 = ScaleWidth * Rnd PSet (X0, Y0), QBColor(Rnd * 15) Next I Else If Command1.Caption = "退出" Then End End If End Sub

  26. 9.3.2 Line方法 • Line方法用来画线,窗体和图片框可用此方法在内部画线。此外,还常用Line方法绘制各种曲线,因为任何曲线都可看作是由无数小线段构成的。Line方法的语法格式为: • [对象名].Line[[Step](Xl,Yl)]-[Step](X2,Y2)][,[Color][,B[F]] • 其中,(X1,Y1)和(X2,Y2)为一条线段的起止坐标,(X1,Y1)可以省略,若省略就表示从当前位置开始画到(X2,Y2)点,当前点坐标可用其CurrentX,CurrenttY属性得到,(CurrentX,CurrenttY)为当前点的坐标;step仍是相对意义,加入step后坐标为相对于当前点的坐标;Color用于设置画线的颜色;参数B表示以(X1,Y1)和(X2,Y2)为对角坐标画一方框;加入F表示对矩形框填充。 • 直线的端点坐标表示为控件坐标系中单位。直线的宽度取决于DrawWidth属性,样式取决于DrawStyle属性,它的设置与线条控件的Border Style属性设置相同。 如果线宽超过1个像素,则Draw Style属性的有效设置是l和6,因为点划线的线宽不能大于1个像素。

  27. 例9-4:绘制线宽大于1个像素的直线时,Visual Basic将线宽分布到指定坐标的两边。如果DrawStyle属性设置为6(内实线),则整个形体(线、框、圆)画在指定坐标内部。 本程序代码利用Line方法在一个窗体上画坐标轴与坐标刻度: Dim x As Single Dim y As Single Private Sub Form_Load() Me.ScaleMode = 6 x = Me.ScaleWidth / 2 y = Me.ScaleHeight / 2 End Sub

  28. Private Sub Form_click() AutoRedraw = True Line (x, 0)-(x, Me.ScaleHeight), RGB(255, 0, 0) Line (0, y)-(Me.ScaleWidth, y), RGB(255, 0, 0) CurentX = x - 4 CurentY = y + 0.5 Print 0 For xt = -10 To 10 If xt <> 0 Then st = xt * 10 CurentX = x + st - 3 CurentY = y + 0.5 Print xt Line (x + st, y - 1)-(x + st, y), RGB(255, 0, 0) End If Next xt For yt = -5 To 7 If yt <> 0 Then st = yt * 10 CurentX = x - 4 CurentY = y + st - 1 Print yt Line (x, y + st)-(x + 1, y + st), RGB(255, 0, 0) End If Next yt End Sub

  29. 9.3.3 Circle方法 Circle方法用来画圆、椭圆、弧等。它的语法格式如下: [对象].Circle[Step](x,y),radius[,[color][,[start][,end][,aspet]]

  30. [例9-5]:用Circle方法在窗体上绘制由圆环构成的艺术图案。构造图案的算法为:将一个半径为r的圆周等分为n份,以这n个等分点为圆心,以半径r1绘制n个圆。设定圆的半径为窗体高度的1/4,圆心在窗体的中心,在圆周上等分50份。如图9-6所示。[例9-5]:用Circle方法在窗体上绘制由圆环构成的艺术图案。构造图案的算法为:将一个半径为r的圆周等分为n份,以这n个等分点为圆心,以半径r1绘制n个圆。设定圆的半径为窗体高度的1/4,圆心在窗体的中心,在圆周上等分50份。如图9-6所示。 Private Sub Form_Click() Dim r, x, y, x0, y0, st As Single Cls r = Form1.ScaleHeight / 4 x0 = Form1.ScaleWidth / 2 y0 = Form1.ScaleHeight / 2 st = 3.1415926 / 25 For i = 0 To 6.283185 Step st x = r * Cos(i) + x0 y = r * Sin(i) + y0 Circle (x, y), r * 0.9 Next i End Sub 图9-6绘制艺术图案

  31. 9.3.4 Point方法 • Point方法用于返回指定点的RGB颜色,其语法格式如下: • [对象.]Point(x,y)

  32. 9.3.5 建立绘制曲线的程序 Line方法和Circle方法足以画出棒图或饼图,但如何画出图6.6所示的数学曲线呢?对于这类曲线,需要用程序画出曲线上的每一点。下面一步步完成这个程序。 首先定义坐标系,为了避免作坐标运算,用Scale方法对坐标系定义的代码如下: Picture1.Scale (-2*pi, 1)-(2*pi,-1) 其中,pi为变量,存贮л的值。 定义了坐标系,接下来就是绘制工作。使用Line万法连接相邻的两点,构成完整的曲线。这段代码如下: Private Sub Command1_Click() Dim i, pi pi = 4 * Atn(1) Picture1.Scale (-2 * pi, 1)-(2 * pi, -1) Picture1.CurrentX = -2 * pi Picture1.CurrentY = 0 For i = -2 * pi To 2 * pi Step 0.01 Picture1.Line -(i, Cos(2 * i) * Sin(3 * i)) Next End Sub 图9-7 函数Cos(2 * i) * Sin(3 * i) 图9-8绘制出的曲线

More Related