我正在开发一个应用程序,其中至少有一个tchart,其中包含4个fastline。最大数量的tcharts是16,取决于几个标准。在不同情况下,fastline包含不同的样本数。这是现在的问题。如果我的样本数小于200-250。然后我可以看到图表是实时绘制的。现在随着样本数量的增加,绘制图形时延迟时间过长。所以,如果我们为每个fasline有1000个样本,那么在图表中总共有4000个样本。并且最多可以有16个这样的图表。我注意到延迟很大程度上取决于fastline包含的样本数和图表中的快速线数。 我已经对autorepaint = false进行了更改。我有chart1.autorepaint = false series1.autorepaint = false以及系列2,3,4。 每次我在fastline中添加一个值时,我必须手动执行chart1.refresh(),这会花费很多时间,因为它会刷新其中的所有4条快速线。 延迟也可以与series1.add()相关, 但我不确定。 有什么办法可以避免延误吗?
这是我正在使用的代码。
public void PlotActualValuesUpToSampleNumber(int SampleNumber)
{
int DataPoint;
Chart1.AutoRepaint = false;
for (DataPoint = LastActualSamplePlotted + 1; DataPoint <= SampleNumber; DataPoint ++ )
{
if (Imp.ThisSampleContainsFault[ChannelNumber, DataPoint])
{
Chart1.Panel.Gradient.Visible = false;
Chart1.Panel.Color = Imp.ChartBackgroundColorIfFault;
}
Series4.Add(Imp.ActualValue[ChannelNumber, DataPoint], "", Color.Yellow);
LastActualSamplePlotted ++;
}
Chart1.Refresh();
Chart1.AutoRepaint = true;
}
我能做些什么来避免延误? 我已经提到了这些链接。 http://www.teechart.net/reference/articles/VCLRealtime.htm http://www.teechart.net/support/viewtopic.php?p=47388 http://www.teechart.net/support/viewtopic.php?t=5127 http://stackoverflow.com/questions/11977423/performance-issue-with-tchart
但没有成功。
答案 0 :(得分:3)
性能主要受图表必须处理的数据量的影响。不同的代码解决方案和环境在这里也可能非常有影响力。所以我的建议是:
您是否尝试将数据数据直接注入到系列中,作为Sandra发布的第二个示例here?这与VCL Real-time Charting文章中的原则相同。
您是否尝试过直接2D版TeeChart?您可以找到有关其效果的白皮书here。
我强烈建议您查看TeeChart程序组提供的功能演示中以下部分的示例。
*所有功能\欢迎!\图表样式\标准\快线*
所有功能\欢迎!\速度
如果你仍然没有得到你期望的结果,请send us一个简单的示例项目我们可以“按原样”运行来重现这里的问题。