teechart pro vcl中大数据的低渲染

low rendering with the big data in teechart pro vcl

我使用 teechart pro vcl 从输入数据绘制图表。 我从 comport 读取数据并使用以下代码将点添加到 TFastlineseries :

var
  a : integer;
  b : double;
-----------------------------
With Dbchart1.Series[0] Do
Begin
   Series0.AddXY(a, b, '', clTeeColor);
end;

我有超过 100000 个点的非常简单的 2d 或有时 3d 彩色图表。但在 20000 点之后渲染变得非常缓慢,在某些地方它会停止。 我能做什么!?有什么算法可以改善这种情况吗?

关闭绘制所有点。

  Series0.DrawAllPoints := false;

来自Real-time charting in TeeChart VCL

TFastLineSeries 引入了几个用于快速绘图的属性

  • DrawAllPoints 布尔值属性,默认值True。通常情况下 图表大小限于固定数量的屏幕像素。这表示 例如,如果您有 1.000.000 分,他们将不可避免地 "share"同屏像素坐标(水平、垂直或 两个方向)。绘制算法然后绘制多个点 在同一屏幕坐标下具有不同的真实 x,y 坐标。 在多次调用绘制算法并浪费 cpu 时间之后 你最终会得到一个单一的彩绘屏幕像素。在这种情况下 合理的做法是用相同的 x 屏幕将点分组 像素坐标并将它们替换为两个点(组最小值和 最大值)。最终结果在视觉上与绘图相同 组中的所有点。但是会快很多,尤其是 如果每组有很多点。将 DrawAllPoints 设置为 False 正是这样做的:内部算法处理数据并绘制 只有非重复(组)点。使用这个技巧你可以绘制 实时获得数百万点,无需大惊小怪。

PDF也提到了如何实时删除系列。

  • 系列删除方法。 Delete 方法现在包括第二个 控制将从中删除多少点的参数 系列。这允许在一次调用中快速删除多个点, 这比使用循环删除多个点要快得多。