2013-01-02 63 views
0

我正在開發一個應用程序,其中有4個fastlines的最小一個tchart。每個快速線在不同情況下包含不同的樣本編號,最多隻有16個。這是現在的問題。如果我的樣本數量少於200-250。那麼我可以看到圖形正在被實時繪製。現在隨着樣本數量的增加,繪製圖形的延遲時間變得非常漫長。所以我們假設我們每個fasline有1000個樣本,那麼圖表中總共有4000個樣本。最多可以有16個圖表。我注意到延遲很大程度上取決於fastline包含的樣本數量和圖表中的快速線數量。 我已經對autorepaint = false進行了更改。我有chart1.autorepaint = false series1.autorepaint = false,也是系列2,3,4。每次我在fastline添加一個值,我不得不手動做chart1.refresh(),它需要很多時間,因爲它刷新其中的所有4條快速線。 延遲也可能與series1.add(), 有關,但我不確定。 有什麼我可以做,以避免延誤?如何提高Tchart在實時繪圖中的性能?

這是我使用的代碼。

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

我也試過做series4.repaint()而不是做整個chart1.refresh()但沒有輸出! –

回答

3

性能主要受圖表必須處理的數據量的影響。不同的代碼解決方案和環境在這裏也可能非常有影響力。所以我的建議是:

  1. 你嘗試過直接注射數據陣列成系列的第二個例子桑德拉發佈here?這與VCL Real-time Charting文章中的原理相同。

  2. 您是否嘗試過直接2D版TeeChart?您可以找到有關其性能的白皮書here

  3. 我強烈建議您查看下面TeeChart項目組提供的功能演示部分的示例。

*所有功能\歡迎!\圖樣式\標準\快速行*

所有功能\歡迎!\速度

如果你還沒有得到結果,你預期請send us一個簡單的示例項目,我們可以「按原樣」運行以在此處重現問題。

+0

我試着去選擇1.但沒有成功!無論如何,我可以只畫一個系列而不刷新整個圖表來查看系列值的變化嗎? –

+0

有系列的RefreshSeries()和Repaint()方法。你有沒有嘗試過使用它們?我建議的其他選項呢? –

+0

我檢查了選項1和3,沒有成功!我發送了一個示例項目的說明,但沒有答覆。 –