注册 登录
编程论坛 VB6论坛

vb实时曲线图的问题

lvguidong123 发布于 2012-10-26 09:08, 620 次点击
vb所采集的实时数据绘制成曲线图时必须是整型吗?没法用小数画曲线图吗?因为我接收的实时数据就是小数。还请大家指点指点
7 回复
#2
风吹过b2012-10-26 10:02
X坐标建议使用整数,Y坐标任意。

绘图时,Y坐标是需要变换的。如,Y最大值是 1的话,那么你可以按 0.2 为一格进行绘图。
#3
lvguidong1232012-10-26 10:40
回复 2楼 风吹过b
我的Y坐标是这样定义的
Picture1.ScaleMode = 0
Picture1.Scale (-30, 105)-(760, -10)
Picture1.Line (750, 0)-(-30, 0), vbBlack
Picture1.Line (0, 100)-(0, -10)
Dim i As Integer
'标x轴刻度
For i = 0 To 750 Step 30
Picture1.Line (i, 100)-(i, 0)
Picture1.CurrentX = i - 16: Picture1.CurrentY = -2: Picture1.Print i
Next i
'标y轴刻度
For i = 0 To 100 Step 10
Picture1.Line (750, i)-(0, i)
If i <> 0 Then Picture1.CurrentX = -30: Picture1.CurrentY = i: Picture1.Print i
Next i
可是却没法显示小数,只能显示整型。怎么回事啊?还请指教
#4
风吹过b2012-10-26 15:35
'标y轴刻度
For i = 0 To 100 Step 10               'Y坐标从 0 - 100 ,每次步进 10
Picture1.Line (750, i)-(0, i)
If i <> 0 Then Picture1.CurrentX = -30: Picture1.CurrentY = i: Picture1.Print i
Next i

根据你的最大值来计算Y 。
如果你的Y最后值是 1的话。
那么这段程序就可以写成:
'标y轴刻度
For i = 0 To 100 Step 10
Picture1.Line (750, i)-(0, i)
If i <> 0 Then Picture1.CurrentX = -30: Picture1.CurrentY = i: Picture1.Print i/100
Next i

如果你的最大值是4的话,那么程序就是:
'标y轴刻度
For i = 0 To 100 Step 10
Picture1.Line (750, i)-(0, i)
If i <> 0 Then Picture1.CurrentX = -30: Picture1.CurrentY = i: Picture1.Print i/100*4
Next i

看懂了吗?
画格时不变,只是显示数值时根据你的最大值进行变换一下,缩小来。
#5
lvguidong1232012-10-27 09:27
回复 4楼 风吹过b
谢谢你的指点。我大体看懂了点。如果我想让Y显示的是98.5。显示小数点后一位的数据。该怎么改呢?
#6
风吹过b2012-10-28 16:30
显示部分使用 round() 函数进行 四舍五入操作。

根据最小值和最大值来确定坐标的网格数。
当然,你最小值是 0 ,最大值是 100时,想显示 小数出来,那就谁也没办法。一般每网格是 范围的 1/10或1/20 。
#7
初心棒棒糖2018-01-26 13:10
#8
初心棒棒糖2018-01-26 13:10
1