当前位置:编程学习 > VB >>

怎样用vb实现坐标系?

请教各位高手,怎样用vb实现在一个窗体的左下显示坐标系,这里所说的坐标系就是那种简单的坐标系符号,带有箭头并标注x,y的那种。万分感激! --------------------编程问答-------------------- 可以用VB PictureBox的Line方法来实现.下面有个例子看看能不能用得上.


Private Sub Command1_Click()
Dim log10(10) As Integer
Picture1.Scale (-20, 230)-(350, -20)
              Picture1.Line (0, 0)-(350, 0), vbBlue
              Picture1.Line (340, -5)-(350, 0), vbBlue
              Picture1.Line (340, 5)-(350, 0), vbBlue
              Picture1.Line (0, 0)-(0, 230), vbBlue
              Picture1.Line (-3, 220)-(0, 230), vbBlue
              Picture1.Line (3, 220)-(0, 230), vbBlue
                
              Picture1.Line (30, 5)-(30, 0), vbBlue
              Picture1.Print "1"
              For j = 0 To 2
              For i = 1 To 10
                If i = 10 Then
                Picture1.Line ((log10(i) + j) * 100 + 30, 10)-((log10(i) + j) * 100 + 30, 0), vbBlue
                Picture1.Print i ^ (j + 1)
                Else
                Picture1.Line ((log10(i) + j) * 100 + 30, 0)-((log10(i) + j) * 100 + 30, 5), vbBlue
                End If
              Next
              Next

End Sub
--------------------编程问答--------------------
Private Sub Form_paint()

  With Picture1

    .Height = Me.ScaleHeight

    .ScaleMode = 6

    oldx = 10

    oldy = .ScaleHeight - 10

    .Cls

    '画坐标轴

    Picture1.Line (oldx, .Top)-(oldx, .ScaleHeight), RGB(255, 0, 0)

    Picture1.Line (0, oldy)-(.ScaleWidth, oldy), RGB(255, 0, 0)

  End With

  Picture1.CurrentX = oldx - 4

  Picture1.CurrentY = oldy + 0.5

  '画坐标原点

  Picture1.Print 0

  For xt = -Int(oldx) To Int(oldx)

    If xt <> 0 Then

      st = xt * 10

      Picture1.CurrentX = oldx + st - 3

      Picture1.CurrentY = oldy + 1

      '画x轴的刻度

      Picture1.Print xt

      Picture1.Line (oldx + st, oldy - 1)-(oldx + st, oldy), RGB(255, 0, 0)

    End If

  Next xt

  For yt = -5 To 7

    If yt <> 0 Then

      st = -yt * 10

      Picture1.CurrentX = oldx - 4

      Picture1.CurrentY = oldy + st - 1

      '画y轴的刻度

      Picture1.Print yt

      Picture1.Line (oldx, oldy + st)-(oldx + 1, oldy + st), RGB(255, 0, 0)

    End If

  Next yt

 

End Sub

Private Sub Form_Resize()

  Form_paint

End Sub

--------------------编程问答-------------------- 以下摘自MSDN:
Scale 方法
用以定义 Form、PictureBox 或 Printer 的坐标系统。不支持命名参数。
语法
object.Scale (x1, y1) - (x2, y2)
Scale 方法的语法包含下列部分:
部分 描述 
object 可选的。一个对象表达式,其值为“应用于”列表中的一个对象。如果省略 object,则带有焦点的 Form 对象缺省为 object。 
x1, y1 可选的。均为单精度值,指示定义 object 左上角的水平(x-轴)和垂直(y-轴)坐标。这些值必须用括号括起。如果省略,则第二组坐标也必须省略。 
x2, y2 可选的。均为单精度值,指示定义 object 右下角的水平和垂直坐标。这些值必须用括号括起。如果省略,则第一组坐标也必须省略。 
说明
Scale 方法使您能够将坐标系统重置到所选择的任意刻度。Scale 对运行时的图形语句以及控件位置的坐标系统都有影响。
如果使用不带参数的 Scale(两组坐标都省略),坐标系统将重置为缇。
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 mark 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

--------------------编程问答-------------------- 谢谢指教
补充:VB ,  基础类
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,