2011-02-23 64 views
2

我在我的Windows窗體,在C#中編碼MSCHart控件。基本上我有一組數據來填充圖表。我需要做以下這些:MSChart滾動條實施+繪製

1)在10秒幀中讀取圖表 2)在每個10秒的幀中,我需要從我的陣列中繪製每秒170個數據項。這將持續到最後。

對不起,我知道這聽起來有點冗長,但我盡我所能來實現這一點,我得到的結果只是失敗。

如果任何人可以請幫助對我來說這一點,我將不勝感激。

這裏是我到目前爲止

#region SetupChart() 
    public bool SetupChart() 
    { 
     try 
     { 
      //Here is where I create the chart scale to show frames of 10 secs 
      this.view.chart.ChartAreas[0].AxisX.ScaleView.Size = 10; 
      return true; 
     } 
     catch { return false; } 

    } 
    #endregion 

    #region Draw() 
    public bool Draw() 
    { 
     try 
     { 
      view.Data = this.dllCall.GetData(1); 

      int startSecond = 0; 
      foreach (Int16 item in view.Data) 
      { 
       //Here is where I read each element from my array, unsure how to plot 170 per second :S 
       this.view.chart.Series["MySeries"].Points.AddXY(startSecond, item); 
    startSecond++; 

      } 
      return true; 
     } 
     catch (Exception ex) 
     { 
      this.ErrorMessage = ex.Message; 
      return false; 
     } 
    } 

去做的,你可以從我上面的代碼中看到snipplet,我已經拿到了圖表中的開頭10秒的幀來展示,但在設計視圖滾動條不會出現在我的圖表下面,我無法弄清楚如何實現滾動條來顯示下一個10秒的框架,目前當我點擊滾動它以1秒爲單位進行滾動時,所以在開始時它的0 - 10,點擊滾動,其1 - 11.我想它,所以當我點擊滾動它會從0-10到10 - 20.

我提到的其他問題是顯示170個數據樣本第二,

請如果有人能夠給我示例代碼ontop我自己向我展示如何實現這一點,我wouldley欣賞它,非常感謝你提前!

+0

您應該在AxisScrollBarClicked事件中處理此事件並設置Scaleview.Position值 – cheedep 2012-01-27 21:31:42

回答

0

我認爲cheedep的評論是正確的。這裏是我將如何修改你的代碼來做到這一點。您需要將AxisScrollBarClicked事件連接到圖表。

#region SetupChart() 
    public bool SetupChart() 
    { 
     try 
     { 
      //Here is where I create the chart scale to show 170 data points 
      this.view.chart.ChartAreas[0].AxisX.ScaleView.Size = 170; 
      return true; 
     } 
     catch { return false; } 

    } 
    #endregion 

    #region Draw() 
    public bool Draw() 
    { 
     try 
     { 
      view.Data = this.dllCall.GetData(1); 

      int startSecond = 0; 
      foreach (Int16 item in view.Data) 
      { 
       this.view.chart.Series["MySeries"].Points.AddXY(startSecond, item); 
       startSecond++; 

      } 
      return true; 
     } 
     catch (Exception ex) 
     { 
      this.ErrorMessage = ex.Message; 
      return false; 
     } 
    } 

    private void chart_AxisScrollBarClicked(object sender, System.Windows.Forms.DataVisualization.Charting.ScrollBarEventArgs e) 
    { 
     if (e.Axis == chart.ChartAreas[0].AxisX) 
     { 
      if (e.ButtonType == System.Windows.Forms.DataVisualization.Charting.ScrollBarButtonType.SmallIncrement) 
       chart.ChartAreas[0].AxisX.ScaleView.Position += 170; 
      else if (e.ButtonType == System.Windows.Forms.DataVisualization.Charting.ScrollBarButtonType.SmallDecrement) 
       chart.ChartAreas[0].AxisX.ScaleView.Position -= 170; 
     } 
    }