现有这样一个问题:
有这样一组坐标值A:(20,Y1);B(40,Y2);C(60,Y3);D(80,Y4)....
其中Y1,Y2,Y3,Y4数值是变化的,并定时更新,如何在PICTURE控件
里实时显示动态曲线,并且值变化,曲线同时变化,如何实现??
有这样一组坐标值A:(20,Y1);B(40,Y2);C(60,Y3);D(80,Y4)....
其中Y1,Y2,Y3,Y4数值是变化的,并定时更新,如何在PICTURE控件
里实时显示动态曲线,并且值变化,曲线同时变化,如何实现??
在模块中写如下代码
Option Explicit
Private Type POINTAPI
x As Long
y As Long
End Type
Public Declare Function Polygon Lib "gdi32" (ByVal hdc As Long, lpPoint As Any, ByVal nCount As Long) As Long
在窗体中写如下代码
Option Explicit
Private Type POINTAPI
x As Long
y As Long
End Type
Private Sub Command1_Click()
Dim Point(0 To 4) As POINTAPI
Point(0).x = 10: Point(0).y = 10
Point(1).x = 250: Point(1).y = 30
Point(2).x = 166: Point(2).y = 80
Point(3).x = 150: Point(3).y = 150
Point(4).x = 50: Point(4).y = 200Call Polygon(Picture1.hdc, Point(0), 5)
End Sub
将Point(0-4).x和Point(0-4).y所有数值改成由Text.Text(1-10)输入即可。
你的消息已看到,与你提问贴内容相同。请解释清楚
你是想动态将A:(20,Y1);B(40,Y2);C(60,Y3);D(80,Y4)四点组成曲线呢?
还是如2楼理解的那样?
如下图:
图片未见到,按你现在所说,你是想动态将A:(20,Y1);B(40,Y2);C(60,Y3);D(80,Y4)四点组成曲线.那比较麻烦,仅4点要画成曲线,涉及4点间插值运算.
不如将4点数据分别处理成棒图显示,棒图动态变化来的方便.
Option Explicit
Dim i As Integer
Dim record_jmm(3) As Single
Private Sub cmdExit_Click()
End
End SubPrivate Sub Form_Load()
Timer1.Interval = 1000
For i = 0 To 3
PitBangtu(i).Height = 4235
PitBangtu(i).Width = 1095
Next i
End SubPrivate Sub Timer1_Timer()
For i = 0 To 3
PitBangtu(i).Cls
Next i
PitBangtu(0).Line (0, 2117.5 - record_jmm(0) * 42.35 / 2)-(1095, 4235), vbRed, BF
PitBangtu(1).Line (0, 2117.5 - record_jmm(1) * 42.35 / 2)-(1095, 4235), vbRed, BF
PitBangtu(2).Line (0, 2117.5 - record_jmm(2) * 42.35 / 2)-(1095, 4235), vbRed, BF
PitBangtu(3).Line (0, 2117.5 - record_jmm(3) * 42.35 / 2)-(1095, 4235), vbRed, BF
End Sub
For i = 0 To 3
PitBangtu(i).Cls
Next i
PicBangtu(0).Line (0, 2117.5 - record_jmm(0) * 42.35 / 2)-(1095, 4235), vbRed, BF
PicBangtu(1).Line (0, 2117.5 - record_jmm(1) * 42.35 / 2)-(1095, 4235), vbRed, BF
PicBangtu(2).Line (0, 2117.5 - record_jmm(2) * 42.35 / 2)-(1095, 4235), vbRed, BF
PicBangtu(3).Line (0, 2117.5 - record_jmm(3) * 42.35 / 2)-(1095, 4235), vbRed, BF
End Sub
Dim i As Integer
Dim record_jmm(3) As Single
Private Sub Form_Load()
For i = 0 To 3
Picture1(i).Height = 4235
Picture1(i).Width = 1000
Picture1(i).Top = 500
Picture1(i).Left = i * 1500 + 500
Picture1(i).BackColor = vbGreen
Next
Timer1.Interval = 1000
record_jmm(0) = 200
record_jmm(1) = -500
record_jmm(3) = -50
Me.Height = 5500
Me.Width = 7000
End SubPrivate Sub Timer1_Timer()
For i = 0 To 3
Picture1(i).Cls
Next i
'42.35是控制Y轴变化的倍率,-100到100。改为4.235则为-1000到1000
Picture1(0).Line (0, 2117.5 - record_jmm(0) * 4.235 / 2)-(1095, 4235), vbRed, BF
Picture1(1).Line (0, 2117.5 - record_jmm(1) * 4.235 / 2)-(1095, 4235), vbRed, BF
Picture1(2).Line (0, 2117.5 - record_jmm(2) * 42.35 / 2)-(1095, 4235), vbRed, BF
Picture1(3).Line (0, 2117.5 - record_jmm(3) * 42.35 / 2)-(1095, 4235), vbRed, BF
End Sub
可惜波形显示尚未实现,甚撼!