如何在实时绘图中提高Tchart的性能?

时间:2013-01-02 15:39:48

标签: c# teechart

我正在开发一个应用程序,其中至少有一个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

但没有成功。

1 个答案:

答案 0 :(得分:3)

性能主要受图表必须处理的数据量的影响。不同的代码解决方案和环境在这里也可能非常有影响力。所以我的建议是:

  1. 您是否尝试将数据数据直接注入到系列中,作为Sandra发布的第二个示例here?这与VCL Real-time Charting文章中的原则相同。

  2. 您是否尝试过直接2D版TeeChart?您可以找到有关其效果的白皮书here

  3. 我强烈建议您查看TeeChart程序组提供的功能演示中以下部分的示例。

  4. *所有功能\欢迎!\图表样式\标准\快线*

    所有功能\欢迎!\速度

    如果你仍然没有得到你期望的结果,请send us一个简单的示例项目我们可以“按原样”运行来重现这里的问题。