【发布时间】:2014-04-23 08:07:55
【问题描述】:
我在 delphi 表单 (XE4) 上放了一个 tchart,宽度为 65535 像素(最大值)。我已将底部轴的比例设置为固定值(最小 0,最大 65534),然后我使用类似以下内容添加值:
for i := 0 to 60000 do
chart1.series[0].addXY(i, 10 + (i mod 80));
结果是一些奇怪的行为,在不应该出现的位置上绘制了额外的线,而 32767 以外的任何点都丢失了。当将底部轴的最大值设置为例如 5000 并用 0 到 5000 之间的“仅”100 个样本填充整个事物时,也会发生同样的事情。值得注意的是,一些添加值的组合接近底部的最大值轴似乎确实有效(甚至从左侧超过 32767 像素)。
有没有人对这种行为的原因有所了解?除了不使用宽度超过 32767 像素的 tcharts 之外,还有什么办法可以解决这个问题?
【问题讨论】:
-
您真的在使用 65K 像素宽的图表吗?有没有可能做一个这样大小的窗口?
-
我把图表放在一个TScrollbox里面,效果很好
-
您使用的是什么类型的图表?快线之类的?听起来像
DrawAllPoints问题 - 尝试将其设置为True。还可以尝试不同的DrawAllPointsStyles。 -
我认为你的做法是错误的。我会这样做。在面板内放置一个图表和两个滚动条。滚动条与
alRight和alBottom对齐,图表与alClient。当用户滚动时,更改图表上显示的数据。如果要将所有数据放在前面,请使用滚动条修改轴范围。或者,如果有很多数据,您可以按需重新填充数据。当然,我很确定图表将具有滚动功能。 -
同意这不是任何现实问题的明智解决方案。 TChart 有很多优化,你可能会因为如此荒谬的非物理图表大小而短路。将图表放在屏幕上(即:within),让图表按照@DavidHeffernan 的建议完成工作。
标签: delphi delphi-xe4 teechart