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 方法现在包括第二个
控制将从中删除多少点的参数
系列。这允许在一次调用中快速删除多个点,
这比使用循环删除多个点要快得多。
我使用 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 方法现在包括第二个 控制将从中删除多少点的参数 系列。这允许在一次调用中快速删除多个点, 这比使用循环删除多个点要快得多。