分享

计算机技术基础(第十一章 图形设计 )

 図籴帑簤屸璺 2019-07-11

计算机技术基础(VB)







学习内容
 
 
第一节 图形设计基础
第一节 图形设计基础
必修
开启
通过
点击进入
第二节 图形控件
第二节 图形控件
必修
开启
通过
点击进入
第三节 绘图方法
第三节 绘图方法
必修
开启
通过
点击进入
第四节 与绘图有关的常用属性、事件和方法
第四节 与绘图有关的常用属性、事件和方法
必修
开启
通过
点击进入
本章小结
本章小结
必修
开启
通过
点击进入



第一节 图形设计基础
一、坐标系统

    缺省坐标系统:

    

    1.刻度单位

      缺省刻度单位:缇(Twip)

      改变刻度单位:对象名.ScaleMode=属性值

    

    2.改变坐标系

    (1)ScaleLeft、ScaleTop属性

      改变坐标系的原点位置。

    【例11-1】

    Private Sub Command1_Click() 
    Label1.Left=0
    Label1.Top=0 
   End Sub

    

    Private Sub Command1_Click() 
     Form1.ScaleLeft=200
     Form1.ScaleTop=300 
     Label1.Left=0 
     Label1.Top=0 
   End Sub

    

    (2)ScaleWidth和ScaleHeight属性

      表示容器对象的内部宽度与高度。

      用于自定义一个刻度单位。

    例:使用ScaleWidth和ScaleHeight改变窗体刻度单位

      设窗体高度是2000Twips,宽度是3000Twips。

       此时水平和垂直刻度单位均为1Twips。

      如果设置:ScaleHeight=500

       则将窗体的高度划分为500个单位,

       每个单位为2000/500,即4Twips

      如果设置:ScaleWidth=1000

       则将窗体的宽度划分为1000个单位,

       每个单位为3000/1000,即3Twips

    将ScaleHeight、ScaleWidth、ScaleLeft与ScaleTop属性设置为任何值都自动将ScaleMode设置为0。

    【例11-2】将一个图形(Shape1)的左上角移动到窗体的中央位置。

   Private Sub Command1_Click() 
    Form1.ScaleHeight=2
    Form1.ScaleWidth=2 
    Shape1.Left=1 
    Shape1.Top=1 
   End Sub

    

    【例11-3】定义窗体的左下角为原点(0,0),y坐标轴正方向向上。

    Private Sub Form_Load() 
     ScaleHeight=-4
     ScaleWidth=4 
     ScaleTop=4 
   End Sub 
   Private Sub Command1_Click() 
     Shape1.Left=1 
     Shape1.Top=1 
   End Sub

    

    【例11-4】定义窗体的中央位置为原点(0,0),y坐标轴正方向向上。

    PrivateSubForm_Load() 
    ScaleHeight=-4
    ScaleWidth=4 
    ScaleTop=2 
    ScaleLeft=-2 
   End Sub 
   Private Sub Command1_Click() 
    Shape1.Left=1 
    Shape1.Top=1 
   End Sub

    

    (3)Scale方法

    格式:[<对象名>.]Scale[(x1,y1)-(x2,y2)]

    【例11-5】在图片框Picture1中打印5行5列的单位矩阵。

    Private Sub Picture1_Click() 
     Dim a(5,5)As Integer
     Picture1.Scale(0,0)-(6,6) 
     For i=1 To 5 
      Picture1.CurrentY=i 
      For j=1 To 5 
       If i=j Then a(i,j)=1 Else a(i,j)=0 
       Picture1.CurrentX=j 
       Picture1.Print a(i,j); 
     Next j,i 
   End Sub

    3.当前坐标

    CurrentX属性:设置或返回的当前坐标的水平坐标

    CurrentY属性:设置或返回的当前坐标的垂直坐标

    例如:在点(200,200)处显示“当前坐标为(200,200)”

      Form1.CurrentX=200

      Form1.CurrentY=200

      Form1.Print"当前坐标为(200,200)"

    4.与位置和大小有关的属性

    

二、颜色

      颜色值:四字节、长整型。

      最低的三个字节:红色、绿色、蓝色。

      每个字节取值:00~FF(或0~255)

    1.在设计阶段设置颜色:在属性窗口设置

    2.在运行阶段设置颜色:

    (1)RGB函数:RGB(red,green,blue)

      获取一个长整型(Long)的RGB颜色值。

    例:Form1.BackColor=RGB(255,0,0)

      设置窗体的背景色为红色

    (2)QBColor函数:QBColor(value)

      value:0~7、8~15(为0~7颜色加亮)

      0—黑色 1—蓝色 2—绿色 3—青色

      4—红色 5—紫红色 6—黄色 7—浅灰色

    例:Form1.BackColor=QBColor(4)

    (3)使用颜色常量

         vbBlack 黑色

         vbRed  红色

         vbGreen 绿色

         vbYellow 黄色

         vbBlue  蓝色

         vbMagenta 洋红色

         vbCyan  青色

         vbWhite  白色

    (4)使用颜色的十六进制值

      &H00BBGGRR&

    (5)使用系统颜色

    例:vbScrollBars &H80000000 滚动条颜色

      vbDesktop  &H80000001 桌面颜色

      ……



第二节 图形控件
一、Shape控件

    1.属性:Shape

        BorderStyle、BorderColor、BorderWidth

        BackStyle、BackColor

        FillStyle、FillColor

    例如:

    

    2.方法

      Move

      object.Move left[,top[,width[,height]]]

    【例11-6】在窗体上移动一正方形,每次移动时使正方形的长和宽增加100缇。

    Private Sub Command1_Click() 
   Shape1.Move Shape1.Left+100,Shape1.Top+100,_
      Shape1.Width+100,Shape1.Height+100 
   End Sub

二、Line控件

    1.作用:设计时在窗体上绘制直线。

    2.属性:BorderStyle、BorderWidth

        X1、X2、Y1、Y2

    注意:运行时可以通过改变X1、X2、Y1和Y2属性来移动它或者调整它的大小。而不能使用Move方法



第三节 绘图方法
一、画点方法(Pset)

    格式:[<对象名>.]PSet [Step](x,y)[,<颜色>]

    功能:在对象的指定位置,用一定的颜色画点

    说明:<对象名> <对象名>—窗体、图片框、缺省为当前窗体。

      Step—可选的,指定相对于由CurrentX和CurrentY属性提供的当前图形位置的坐标。

      (x,y)—点的水平和垂直坐标。

      <颜色> <颜色>—绘制该点的RGB颜色。

      省略时使用 <对象名>的ForeColor属性值。

    【例11-7】 用PSet方法在窗体上绘制一条[00,3600]的正弦曲线。

    Private Sub Form_Click() 
     DrawWidth=2
     Scale(0,1)-(360,-1) 
     For x=0 To 360 
      y=Sin(x*3.1415926/180) 
      PSet(x,y),vbRed 
     Next x 
   End Sub

    

    【例11-8】 用PSet方法在窗体上绘制一条如下图所示的星形曲线,曲线由以下参数方程决定:

      x=sin2t*cost

      y=sin2t*sint

      其中t的取值范围为0≤t≤2π

    

   Private Sub Form_Click() 
    Scale(-1,1)-(1,-1) 
    DrawWidth=2 
    ForeColor=vbRed 
    For t=0 To 2*3.1415926 Step 0.001 
     x=Sin(2*t)*Cos(t) 
     y=Sin(2*t)*Sin(t) 
     PSet(x,y) 
    Next t 
   End Sub

二、画线、矩形方法(Line)

    格式:[<对象名>.]Line [Step][(x1,y1)]–[Step](x2,y2)

        [,<颜色>[,B[F]]]

    功能:在指定两点之间用指定的颜色画线或矩形

    说明:<对象名> <对象名>—窗体、图片框,缺省为当前窗体。

       Step—可选的,指定相对于由CurrentX和CurrentY属性提供的当前位置的坐标。

       (x1,y1)—直线或矩形的起点坐标。如果省略,线起始于由CurrentX和CurrentY指示的位置。

       Step—可选的,指定相对于起点的终点坐标。

       (x2,y2)—直线或矩形的终点坐标。

      <颜色>—画线时用的RGB颜色。

        B—利用对角坐标画出矩形。

        F—规定矩形以矩形边框的颜色填充。

    【例11-9】单击窗体在窗体上绘制直线、矩形。

    Private Sub Form_Click() 
     ScaleWidth=100
     ScaleHeight=100 
     DrawWidth=5 
     '画三角形 
     Line(10,30)-(10,80),vbRed 
     Line-(30,80),vbGreen 
     Line-(10,30),vbBlue 
     '画矩形 
     CurrentX=40: CurrentY=30 
     Line-(60,80),vbRed,B 
     '画实心矩形 
     CurrentX=70: CurrentY=30 
     Line-Step(20,50),vbMagenta,BF 
   End Sub

    

    【例11-10】给星形曲线绘制坐标线。

    Private Sub Form_Click() 
   Scale(-1,1)-(1,-1) 
   DrawWidth=3 
   Line(-1,0)-(1,0),vbBlue 
   Line(0,1)-(0,-1),vbBlue 
   DrawWidth=1 
   For i=-1 To 1 Step 0.1 
     Line(i,0.05)-(i,0) '画垂直刻度 
   Next i 
   DrawWidth=2 
   ForeColor=vbRed 
   For t=0 To 2*3.1415926 Step 0.001 
     x=Sin(2*t)*Cos(t) 
     y=Sin(2*t)*Sin(t) 
     PSet(x,y) 
   Next t:End Sub

    

    【例11-11】在窗体上以随机的颜色从外向里画矩形,每隔一秒画一个。

      Dim X1,Y1,X2,Y2,DX,DY
     Private Sub Form_Load() 
      X1=0 
      Y1=0 
      X2=ScaleWidth 
      Y2=ScaleHeight 
      DX=ScaleWidth/20 
      DY=ScaleHeight/20 
      DrawWidth=8 
    Randomize 
   End Sub 
   Private Sub Timer1_Timer() 
    If X1 <X2 And Y1<Y2 Then
      Line(X1,Y1)-(X2,Y2),QBColor(Int(Rnd*15)),B 
      X1=X1+DX 
      Y1=Y1+DY 
      X2=X2-DX 
      Y2=Y2-DY 
   Else 
      Timer1.Enabled=False 
      MsgBox "绘制完毕"
    End If 
   End Sub

    

三、画圆方法(Circle)

    格式:[<对象名>.]Circle[Step](x,y),<半径>,[<颜色>],

        [<起始角>],[<终止角>][,<纵横比>]

    功能:在对象上画圆、椭圆或弧。

    <对象名> <对象名>—窗体、图片框。缺省为当前窗体。

    Step—指定圆、椭圆或弧的中心相对坐标。

    (x,y)—圆、椭圆或弧的中心坐标。

    <半径> <半径>—圆、椭圆或弧的半径。为最长轴的尺寸。

    <颜色> <颜色>—圆的轮廓颜色。省略则使用ForeColor值。

    <起始角>,<终止角> <终止角> —以弧度为单位,范围[-2π,2π]。

       指定弧或扇形的起点和终点位置。

       起点的缺省值是0;终点的缺省值是2π。

      若为负数,在画弧的同时画圆心到弧端点的连线。

    <纵横比> <纵横比>—圆的纵横尺寸比。缺省值为1.0(标准圆)

      注意:Circle方法总是沿逆时针方向绘图。

    【例11-12】在窗体上绘制以下图形:

    

    Const pi=3.14159265
   ScaleWidth=100
   ScaleHeight=100 
   Circle(30,30),10 
   Circle(70,30),10,vbGreen, , ,0.5 
   Circle(70,30),10,vbRed, , ,2 
   Circle(30,75),10, ,-0.75*pi,-0.25*pi 
   Circle(70,75),10, ,-0.25*pi,-0.75*pi 
   Circle(70,75),10, ,1.25*pi,1.75*pi

    【例11-13】在窗体上绘制以下图形:

    

    Private Sub Form_Click() 
    FillStyle=0 '定义填充风格—Solid
    Scale(0,100)-(100,0) 
    cx=50   '圆心X坐标 
    cy=0    '圆心Y坐标 
    r=60    '半径 
    For i=45 To 130 Step 5 
     If i Mod 10 <>0 Then
      FillColor=vbRed 
     Else 
      FillColor=vbYellow 
     End If 
     Circle(cx,cy),r, ,-i*3.1416/180,-(i+5)*3.1416/180 
    Next i 
  End Sub




第四节 与绘图有关的常用属性、事件和方法
一、清除图形方法(Cls)

    [<对象名>].Cls

    功能:清除运行时Form或PictureBox所生成的图形和文本

  <对象名>—窗体、图片框。

    注意:

      (1)Cls的功能受AutoRedraw的影响。

      (2)调用Cls之后,对象的CurrentX和CurrentY属性复位为0。

二、线宽(DrawWidth)属性和线型(DrawStyle)属性

    1.DrawWidth属性

      设置图形方法输出的线宽。

      线宽的取值范围从1到32767。

      该值以像素为单位表示线宽。缺省值为1,即一个像素宽。

      如果DrawWidth属性值大于1,画出的图形是实线;如果DrawWidth属性值等于1,可以通过DrawStyle属性画出各种线型。

    2.DrawStyle属性

      设置图形方法输出的线型。

    

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

    1.FillColor属性

      改变填充图形的颜色。

    2.FillStyle属性

      设置封闭图形的填充样式。

    

四、自动重画(AutoRedraw)属性

    使用如Print、PSet、Line和Circle方法,在改变对象大小或隐藏在另一个对象后又重新显示的情况下,设置AutoRedraw为True,将在Form或PictureBox控件中自动重绘输出。

    运行时在程序中设置AutoRedraw,可以在画持久图形(如背景色或网格)和临时图形之间切换。如果设置AutoRedraw为True,以前的输出成为背景屏幕的一部分。将AutoRedraw设置为False后,用Cls方法清除绘图区时不会删除背景图形。把AutoRedraw改回True后,再用Cls将清除背景图形。

    【例11-14】

    单击Command1在图片框中绘制一系列背景线,

    单击Command2在图片框中随机绘制一系列圆,

    单击Command3清除图片框中绘制的圆,

    单击Command4清除图片框中的所有图形。

    

    Private Sub Command1_Click() 
    P1.AutoRedraw=True
    dx=P1.ScaleWidth/20 
    P1.ForeColor=vbYellow 
    For i=1 To 19 
     P1.Line(i * dx,0)-(i * dx,P1.ScaleHeight) 
    Next i 
   End Sub 
   Private Sub Command2_Click() 
     P1.AutoRedraw=False 
     P1.ForeColor=vbRed 
     Randomize 
     For i=1 To 20 
      cx=Int(Rnd * P1.ScaleWidth) 
      cy=Int(Rnd * P1.ScaleHeight) 
      P1.Circle(cx,cy),200 
    Next I 
   End Sub 
   Private Sub Command3_Click() 
     P1.AutoRedraw=False 
     P1.Cls 
   End Sub 
   Private Sub Command4_Click() 
     P1.AutoRedraw=True 
     P1.Cls 
   End Sub

五、Paint事件

    在应用程序运行时,当一个对象被移动或改变大小之后;或当一个覆盖该对象的窗体被移开之后,如果要保持该对象上所画图形的完整性(重现原来的图形),可以选择触发Paint事件来完成图形的重画工作。

    如果AutoRedraw属性被设置为True,重新绘图将会自动进行,此时Paint事件无效。

    使用Refresh方法时,Paint事件即被自动调用。

    在Resize事件过程中调用Refresh方法,强制使用Paint事件重画图形。

    【例11-15】在窗体中画一个米字形。当窗体的大小改变时,米字形也随着自动调整。

    

    Private Sub Form_Paint() 
     Dim HalfX,HalfY
     '设置到宽度的一半。 
     HalfX=ScaleLeft+ScaleWidth/2 
     '设置到高度的一半。 
     HalfY=ScaleTop+ScaleHeight/2 
     '画一个米字形。先画对角线 
     Line(ScaleLeft,ScaleTop)-(ScaleWidth,ScaleHeight) 
     Line(ScaleLeft,ScaleHeight)-(ScaleWidth,ScaleTop) 
    '再画十字 
    Line(HalfX,ScaleTop)-(HalfX,ScaleHeight) 
    Line(ScaleLeft,HalfY)-(ScaleWidth,HalfY) 
  End Sub 
  Private Sub Form_Resize() 
    Refresh 
  End Sub


本章小结

    1.坐标系统

     改变坐标系统的方法:

      ScaleLeft和ScaleTop属性

      ScaleWidth和ScaleHeight属性

      Scale方法

    2.Left、Top、Width、Height属性和ScaleLeft、ScaleTop、ScaleHeight、ScaleWidth属性的区别。

    3.颜色

      RGB函数

      QBColor函数

    4.图形控件

      Shape控件

      Line控件

    5.绘图方法

      画点方法PSet

      画直线、矩形方法Line

      画圆方法Circle

    6.与绘图有关的常用属性、事件和方法清除图形方法(Cls)

      线宽(DrawWidth)属性和线型(DrawStyle)属性

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

      自动重画(AutoRedraw)属性

      Paint事件

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多