📄 public_coordinate.bas
字号:
Attribute VB_Name = "Public_coordinate"
Option Explicit
Public Const y_up = -5000 '纵轴正向最大坐标
Public Const y_down = 1000 '纵轴负向最大坐标
Public Const x_left = -0 '横轴负向最大坐标
Public Const x_right = 500 '横轴正向最大坐标
Public Const x_graduation = x_right / 10 '横轴每10为一分度
Public Const y_graduation = 1000 '纵轴每10为一分度
Sub Draw_coordinate(paper As PictureBox, Net_show As Boolean, margin_Left, margin_Right, margin_Up, margin_Down As Integer) '绘制坐标
'Net_show=true 则显示网格
'******************************* 绘制坐标 ******************************************************
Dim i As Integer
'定义坐标距离左右上下的边界
margin_Left = (x_right - x_left) / 20
margin_Right = (x_right - x_left) / 40
margin_Up = (y_down - y_up) / 20
margin_Down = (y_down - y_up) / 10
paper.Cls
paper.ForeColor = RGB(75, 75, 75) 'QBColor(8)
paper.ScaleLeft = -(Abs(x_left) + margin_Left)
paper.ScaleWidth = (margin_Left + Abs(x_left) + x_right + margin_Right)
paper.ScaleHeight = (margin_Up + Abs(y_up) + y_down + margin_Down)
paper.ScaleTop = -(margin_Up + Abs(y_up))
Debug.Print paper.ScaleWidth
If Net_show = False Then '当不划网格线时,需要绘制坐标轴
paper.Line (0, y_up)-(0, y_down) 'x轴
paper.Line (x_left, 0)-(x_right, 0) 'Y轴
End If
'绘制刻度X
For i = 0 To Int(x_right / x_graduation)
If Net_show = False Then '当不划网格线时,需要划竖刻度线
paper.Line (i * x_graduation, paper.ScaleHeight / 100)-(i * x_graduation, -paper.ScaleHeight / 100) '划竖刻度线
End If
paper.CurrentX = i * x_graduation
If Net_show = True Then
paper.CurrentY = y_down
Else
paper.CurrentY = 0
End If
paper.Print i * x_graduation
Next i
'绘制Y轴正刻度
For i = 0 To Int(Abs(y_up) / y_graduation)
If Net_show = False Then '当不划网格线时,需要划横刻度线
paper.Line (-paper.ScaleWidth / 200, -i * y_graduation)-(paper.ScaleWidth / 200, -i * y_graduation) '划横刻度线
End If
paper.CurrentX = -paper.TextWidth("0.01")
paper.CurrentY = -i * y_graduation - paper.TextHeight("0") / 2
paper.Print Format(i * 0.1, "0.0")
Next i
'绘制Y轴负刻度
For i = 1 To Int(y_down / y_graduation)
If Net_show = False Then '当不划网格线时,需要划横刻度线
paper.Line (-paper.ScaleWidth / 200, i * y_graduation)-(paper.ScaleWidth / 200, i * y_graduation) '划横刻度线
End If
paper.CurrentX = -paper.TextWidth("-0.01")
paper.CurrentY = i * y_graduation - paper.TextHeight("0") / 2
paper.Print Format(-i * 0.1, "0.0")
Next i
'绘制网格
If Net_show = True Then
For i = 0 To Int(x_right / x_graduation) '绘制竖线
paper.Line (i * x_graduation, y_up)-(i * x_graduation, y_down)
Next i
For i = y_up / y_graduation To y_down / y_graduation '绘制横线
paper.Line (0, i * y_graduation)-(x_right, i * y_graduation) '划横刻度线
Next i
End If
''paper.DrawMode = vbCopyPen
'****************************************************************************************************
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -