1

之前的问题有一些很好的输入,但它对我不起作用,因为我的问题似乎与 Delphi 7 相关。

我有一个包含单个系列 (TFastLineSeries) 和 3,600 个数据点的图表,绘制最多需要 45 秒。其他人说它应该快如闪电,所以谁能帮忙,记住我使用的是 Delphi 7 和标准的 TChart 组件。

我怀疑我应该先准备数据,而不是调用 AddXY() 3,600 次,然后一次添加所有数据。


更新:在 D7 中 AddXy() 函数签名是function AddXY(Const AXValue, AYValue: Double; Const AXLabel: String; AColor: TColor) : Longint; wheretimeLabelis a string representing MM:SS. But what value should I be passing for

我用 `Chart1.Series[0].AddXY(Chart1.Series[0].Count, codValue, timeLabel, clRed


顺便说一句,我已经编写了 Chart1.Series[0].XValues.DateTime := True; Chart1.BottomAxis.DateTimeFormat := 'nn:ss'; //'hh' 或 'nn' 或 'ss' 如你所愿,例如 Chart1.BottomAxis.DateTimeFormat:="dd/mm/yyyy hh:mm";

4

3 回答 3

1

也许您生成要放入图表的值的方式是瓶颈?

在 Delphi 2010 上,我测量了以下代码花费不到 1/10 秒:

var
  I: Integer;
begin
  for I := 0 to 3000 - 1 do
    Series1.AddXY(Random(1000), Random(100));
于 2011-01-25T00:59:07.700 回答
1

顺便说一句:在添加值之前将 Chart1.AutoRepaint 设置为 false 并在之后将 if 设置为 true 也可以加快绘图速度

于 2011-01-25T10:54:22.487 回答
1

这可能会对 TeeChart 的开发人员有所帮助.... 使用 TeeChart 快速绘制线条

于 2011-01-26T17:47:35.543 回答