如何控制 MSChart 中显示的折线图的点数?

of123 2008-05-20 10:59:26
我是用 MSChart 显示波形图,虽然它处理很慢,但出来的效果还可以。

因为波形可能很长,需要多屏显示(用 HScroll 控件),因此每屏的尺度要一致。所以用了固定大小的数组作数据源:

'每屏显示 10K 数据
ReDim sngValues(1 To 10240, 1 To 2)

' Mydata 从 Binary 文件中读取得到
CopyMemory sngValues(1, 2), myData(0), m * 4

MSChart1.ChartData = sngValues

这里的问题是,最后一屏的数据 m 可能少于10K,因此后面的线会跳到 0。

我现在的对策是用最后一个点的数据填充后面的数组成员,让它拉成一条直线。但最理想的还是令后面 M + 1 到 10240 的点不显示。

请问有什么办法?谢谢。
...全文
629 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzyong00 2008-05-21
  • 打赏
  • 举报
回复
不知道我理解的对不
zzyong00 2008-05-21
  • 打赏
  • 举报
回复
最后一屏的数据 m 可能少于10K,因此后面的线会跳到 0。
=====================
啊是因为已对变体数组sngValues进行过类型初始化,哪样,sngValues从m+1到10k可能是数值类型(integer,long...)
这样,后面的线就会跳到 0
如果把最后一屏的数据改成一个sngValues2(1 to m,1 to 2) 这样的数组,后面就没有数据了,当然不存在跳0现象了!
不过,X轴的标识,不要用sngValues的第一序列,即sngValues(*,1),让sngValues(*,1)全部为空即可.可以用RowLabel属性设置X轴的标识
of123 2008-05-21
  • 打赏
  • 举报
回复
阿勇,能否说明一下你的想法?
zzyong00 2008-05-21
  • 打赏
  • 举报
回复
是的,我调试时也发了现了,一个variant 16个字节,肯定有数据空洞
of123 2008-05-21
  • 打赏
  • 举报
回复
谢谢,你的想法很正确。我测试的结果也很好。

两点遗憾:
1. 不可以用 CopyMemory 来交换数据,因为 Variant 型的数组是有数据空洞的。不过循环赋值也很快。
2. 占用的内存更大一些。

我把这个帖子结了,再另外开贴欢迎大家的讨论。
zzyong00 2008-05-20
  • 打赏
  • 举报
回复
'每屏显示 10K 数据
ReDim sngValues(1 To 10240, 1 To 2)

' Mydata 从 Binary 文件中读取得到
CopyMemory sngValues(1, 2), myData(0), m * 4

MSChart1.ChartData = sngValues


最后一屏时:
dim sngValues2()
redim sngValues2(1 to m,1 to 2)
CopyMemory sngValues2(1, 2), sngValues(1, 2),m * 16
MSChart1.ChartData = sngValues2

尺度最好不用使用sngValues的第一序列
东方之珠 2008-05-20
  • 打赏
  • 举报
回复
如果要做到M + 1 到 10240 的点不显示,有困难,能否设置颜色和背景色相同,这样就看不见了。
当然,我从未用mschart画过图,只是瞎猜而已!
of123 2008-05-20
  • 打赏
  • 举报
回复
原来就是直接 ReDim sngValues(1 To m, 1 To 2),这样每屏的尺度就不一样了,特别是 m 远小于 10240 时。

曾试过 MSChart1.RowCount = m, 但同样会引起尺度变化。效果同 ReDim sngValues(1 To m, 1 To 2)。
vbscape 2008-05-20
  • 打赏
  • 举报
回复
关注一下,有个办法是最后一屏重新redim一下
ReDim sngValues(1 To m, 1 To 2)
但是这样的结果是跟前面的横向比例不一样了,看起来不舒服。
最理想的还是让后面点不显示。
vbscape 2008-05-20
  • 打赏
  • 举报
回复
关注一下,有个办法是最后一屏重新redim一下
ReDim sngValues(1 To m, 1 To 2)
但是这样的结果是跟前面的横向比例不一样了,看起来不舒服。
最理想的还是让后面点不显示。
东方之珠 2008-05-20
  • 打赏
  • 举报
回复
嘿嘿,没用过这控件作图,来支持+顶+接分!

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧