2014-02-13 26 views
1

我正在嘗試使用C#Chart對象來構建數據點的圖表。對於數組中的每個數據點,我想繪製圖表上的點,並在添加點時使條「增長」。因此,當我生成1000個隨機數時,我想在圖表上設置1,000個點,每個點從零開始,每次增加1個值。在試圖做到這一點時,我注意到圖表只是一次構建所有,而不是增加每個點並「增長」這些條。任何關於如何使酒吧變成動畫的建議?我知道圖表是一個圖像,所以我不介意每次重繪,但我甚至不知道如何做到這一點。C#構建圖表動畫

這裏是我的代碼示例:

for (int i = 1; i <= numberOfRolls; i++) 
{ 
    int number = randomNumber(); 
    myNumberDictionary[number] += 1; 

    foreach (var point in MyChart.Series["MySeries"].Points) 
    { 
     point.SetValueXY(Convert.ToInt32(point.XValue), myNumberDictionary[Convert.ToInt32(point.XValue)]); 
    } 
} 

有什麼建議?

+0

'對於添加到圖表中的每個數據點,我想將該點添加到圖表中 - 該句子沒有意義。 – Tarec

+0

無法編輯:每次迭代你正在使用隨機元素的「myNumberArray」(無論它做什麼)並將其值增加1.然後在內部foreach循環中將每個點的「Y」位置設置爲正確的「卷」列表元素。那些做什麼? – Tarec

+0

對不起。修復。本質上,我想每次繪製點,並繪製一個新的圖表,每次繪製一個點。 –

回答

0

如果您在UI線程上執行您的任務,繪圖將等到您的任務完成。要在添加新點時刷新圖表(UI),您需要在單獨的線程中執行此操作。

下面是如何實現它的一個例子。

for (int i = 1; i <= numberOfRolls; i++) 
{ 
    int number = randomNumber(); 
    myNumberDictionary[number] += 1; 

    foreach (var point in MyChart.Series["MySeries"].Points) 
    { 
      var startNew = Task.Factory.StartNew(() => 
      { 
       Invoke(new Action(() => 
        point.SetValueXY(Convert.ToInt32(point.XValue), 
        myNumberDictionary[Convert.ToInt32(point.XValue)]); 
      }); 
    } 
}