如题,怎样画可缩放且带分度的坐标轴

解决方案 »

  1.   

    .ScaleMode
    .ScaleWidth
    .ScaleHeight
    .Scale
    .Line
    Scale 方法示例 
    本示例使用 Move 方法设立一个自定义座标系统,使得一个条形图可以在窗体上画出。要检验此示例,可将本例代码粘贴到一个窗体的声明部分,然后按 F5 键并单击该窗体。Private Sub Form_Click ()
       Dim I, OldFontSize   ' 声明变量。
       Width = 8640: Height = 5760   ' 按缇设置窗体大小。
       Move 100,100   ' 移动窗体起点。
       AutoRedraw = -1   ' 打开AutoRedraw。
       OldFontSize = FontSize   ' 保持旧的字体大小。
       BackColor = QBColor(7)   ' 将背景设置为灰色。
       Scale (0, 110)-(130, 0)   ' 设定自定义座标系统。
       For I = 100 To 10 Step -10
          Line (0, I)-(2, I)   ' 每隔 10 个单位划尺寸标记。
          CurrentY = CurrentY + 1.5   ' 移动光标位置。
          Print I   ' Print scale  value on left.
          Line (ScaleWidth - 2, I)-(ScaleWidth, I)
          CurrentY = CurrentY + 1.5   ' 移动光标位置。
          CurrentX = ScaleWidth - 9
          Print I   ' 将尺寸标记值打印在右边。
       Next I
       ' 画条形图。
       Line (10, 0)-(20, 45), RGB(0, 0, 255), BF   ' 第一个蓝色条。
       Line (20, 0)-(30, 55), RGB(255, 0, 0), BF   ' 第一个红色条。
       Line (40, 0)-(50, 40), RGB(0, 0, 255), BF
       Line (50, 0)-(60, 25), RGB(255, 0, 0), BF
       Line (70, 0)-(80, 35), RGB(0, 0, 255), BF
       Line (80, 0)-(90, 60), RGB(255, 0, 0), BF
       Line (100, 0)-(110, 75), RGB(0, 0, 255), BF
       Line (110, 0)-(120, 90), RGB(255, 0, 0), BF
       CurrentX = 18: CurrentY = 100   ' 移动光标位置。
       FontSize = 14   ' 放大标题尺寸。
       Print "Widget Quarterly Sales"   ' 打印标题。
       FontSize = OldFontSize   ' 还原字体大小。
       CurrentX = 27: CurrentY = 93   ' 移动光标位置。
       Print "Planned Vs. Actual"   ' 打印子标题。
       Line (29, 86)-(34, 88), RGB(0, 0, 255), BF   ' 打印图例。
       Line (43, 86)-(49, 88), RGB(255, 0, 0), BF
    End Sub
      

  2.   

    Private Sub Form_Load()
    Form1.Height = Form1.Width
    Form1.AutoRedraw = True '自动重绘
    Form1.DrawWidth = 1 '设定线宽
    HScroll1.Max = 10
    HScroll1.Min = 4
    HScroll1.LargeChange = 1
    End SubPrivate Sub HScroll1_Change()
    Dim a As Single
    Form1.Cls
    a = HScroll1.Value / 2
    Form1.Scale (-a, -a)-(a, a)   '自定义坐标系
    Line (0, -a)-(0, a), vbRed '画Y轴
    Line (-a, 0)-(a, 0), vbRed '画X轴
    For I = -a To a '画Y轴刻度
    Line (-0.1, I)-(0, I), vbRed
    If I <> 0 Then
     CurrentY = CurrentY - 0.2 '控制Y坐标
     Else
     CurrentY = CurrentY + 0.2
     End If
     CurrentX = -0.5
     Print (-I)  '输出Y刻度数值
    Next
    For I = -a To a '画Y轴刻度
    Line (I, 0.1)-(I, 0), vbRed
    If I <> 0 Then
     CurrentX = CurrentX - 0.2 '控制X坐标
     Else
     CurrentX = CurrentX + 0.2
     End If
     CurrentY = 0.5
     Print (-I)  '输出Y刻度数值
    Next
    End Sub
      

  3.   

    修改了下:
    Private Sub Form_Load()
    Form1.Height = Form1.Width
    Form1.AutoRedraw = True '自动重绘
    Form1.DrawWidth = 1 '设定线宽
    HScroll1.Max = 10
    HScroll1.Min = 4
    HScroll1.LargeChange = 1End SubPrivate Sub HScroll1_Change()
    Dim a As Single
    Form1.Cls
    a = HScroll1.Value / 2
    Form1.Scale (-a, -a)-(a, a)   '自定义坐标系
    Line (0, -a)-(0, a), vbRed '画Y轴
    Line (-a, 0)-(a, 0), vbRed '画X轴
    For I = -a To a '画Y轴刻度
    Line (-0.1, I)-(0, I), vbRed
    If I <> 0 Then
     CurrentY = CurrentY - 0.2 '控制Y坐标
     Else
     CurrentY = CurrentY + 0.2
     End If
     CurrentX = -1 * (a / 12)
     Print (-I)  '输出Y刻度数值
    Next
    For I = -a To a '画Y轴刻度
    Line (I, 0.1)-(I, 0), vbRed
    If I <> 0 Then
     CurrentX = CurrentX - 0.2 '控制X坐标
     Else
     CurrentX = CurrentX + 0.2
     End If
     CurrentY = a / 12
     Print (I)  '输出X刻度数值
    Next
    End Sub