我使用Teechart Pro VCL从输入数据绘制图表。 我从Comport读取数据并使用以下代码向TFastline系列添加点:
var
a : integer;
b : double;
-----------------------------
With Dbchart1.Series[0] Do
Begin
Series0.AddXY(a, b, '', clTeeColor);
end;
我有非常简单的 2D 或有时超过 100000 点的 3D 彩色图形。 但是在 20000 点之后,渲染变得非常慢,在某些地方它会停止。 我能做什么!?有没有改善这种情况的算法?
关闭绘制所有点。
Series0.DrawAllPoints := false;
从TeeChart VCL中的实时图表:
TFastLine系列介绍了用于快速绘制的几个属性
- DrawAllPoints 布尔属性,默认值 True。通常 图表大小限制为固定数量的屏幕像素。这意味着 例如,如果您有 1.000.000 点,他们将不可避免地 "共享"相同的屏幕像素坐标(水平、垂直或 两个方向(。然后绘制算法将绘制多个点 在同一屏幕坐标上具有不同的实际 x,y 坐标。 多次调用后绘制算法,浪费CPU时间 你最终会得到一个彩绘屏幕像素。在这种情况下,a 合理的做法是使用相同的X屏幕对点进行分组 像素坐标并用两个点替换它们(组最小值和 最大值(。最终结果在视觉上将与绘图相同 组中的所有点。但它会快得多,尤其是 如果每组有很多积分。将绘制所有点设置为假 正是这样做的:内部算法处理数据并绘制 仅非重复(组(点。使用这个技巧你可以绘图 数百万个实时点,几乎没有大惊小怪。
PDF还提到了如何实时从系列中删除。
- 系列删除方法。删除方法现在包括第二个 参数,用于控制将从 系列。这允许在单个调用中快速删除多个点, 这比使用循环删除多个点要快得多。