我用了一个picturebox控件,想在上面画串口采集过来的曲线,当然包括坐标轴。
我在进行缩放的时候遇到问题。我每次改变
'变换坐标系
Picture1.Scale (x1, y1)-(x2, y2)Private Sub Command1_Click(Index As Integer)If Index = 0 Then
x2 = x2 / 1.2End If
If Index = 1 Then
x2 = x2 * 1.2
End Ifcoordzoom
Drawdata_txt Timex_txt, Datacomy_txt
End Sub但是我坐标轴的刻度就不对了。
For i = x1 To x2 Step LX
Picture1.Line (i, y2)-(i, y2 + 0.5)
'显示时间值
Picture1.CurrentX = i
Picture1.CurrentY = y2 + 0.5
Picture1.Print Format(i, "######0")
Next i本来我的小刻度线长度是0.5 但是随着scale的变化,就变得越来越短或越来越长了。
我在进行缩放时用的方法是不是压根不对啊?
因为这样很难兼容曲线和刻度。
请各位高手指点迷津。
谢谢。
我在进行缩放的时候遇到问题。我每次改变
'变换坐标系
Picture1.Scale (x1, y1)-(x2, y2)Private Sub Command1_Click(Index As Integer)If Index = 0 Then
x2 = x2 / 1.2End If
If Index = 1 Then
x2 = x2 * 1.2
End Ifcoordzoom
Drawdata_txt Timex_txt, Datacomy_txt
End Sub但是我坐标轴的刻度就不对了。
For i = x1 To x2 Step LX
Picture1.Line (i, y2)-(i, y2 + 0.5)
'显示时间值
Picture1.CurrentX = i
Picture1.CurrentY = y2 + 0.5
Picture1.Print Format(i, "######0")
Next i本来我的小刻度线长度是0.5 但是随着scale的变化,就变得越来越短或越来越长了。
我在进行缩放时用的方法是不是压根不对啊?
因为这样很难兼容曲线和刻度。
请各位高手指点迷津。
谢谢。
Private Sub Form_Load()
Form1.Height = Form1.Width
Form1.AutoRedraw = True '自动重绘
Form1.DrawWidth = 2 '设定线宽
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) '输出Y刻度数值
Next
For I = -a To a Step 0.01
Form1.PSet (I, Sin(I)), vbBlue
Next
End Sub
HScroll1.Max = 10 HScroll1.Min = 4 HScroll1.LargeChange = 1
这个类是怎么定义的啊
private sub form_load()
kdl=0.5
end subPrivate Sub Command1_Click(Index As Integer)
If Index = 0 Then
x2 = x2 / 1.2
kdl=kdl / 1.2
End If
If Index = 1 Then
x2 = x2 * 1.2
kdl=kdl * 1.2
End Ifcoordzoom
Drawdata_txt Timex_txt, Datacomy_txt
End SubFor i = x1 To x2 Step LX
Picture1.Line (i, y2)-(i, y2 + kdl)
'显示时间值
Picture1.CurrentX = i
Picture1.CurrentY = y2 + kdl
Picture1.Print Format(i, "######0")
Next i