0

我正在开发一个应用程序,其中至少有一个 tchart 和 4 条快线。tcharts 的最大数量为 16,具体取决于几个标准。每条快线在不同情况下包含不同的样本数。这是现在的问题。如果我的样本数少于 200-250。然后我可以看到图表是实时绘制的。现在随着样本数量的增加,绘制图表的延迟会变得很长。因此,假设每个 fasline 有 1000 个样本,那么图表中总共有 4000 个样本。最多可以有 16 个这样的图表。我注意到延迟高度依赖于 fastline 包含的样本数量和图表中的 fastlines 数量。我已经对 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

但没有成功。

4

1 回答 1

3

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

  1. 您是否尝试过将数据数组直接注入到 Sandra 在此处发布的第二个示例中?这与 VCL实时图表文章中的原理相同。

  2. 你试过 TeeChart 的 Direct 2D 版本吗?您可以在此处找到有关其性能的白皮书。

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

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

所有功能\欢迎!\速度

如果您仍然没有得到预期的结果,请向我们发送一个简单的示例项目,我们可以“按原样”运行以在此处重现问题。

于 2013-01-02T15:53:28.387 回答