2012-10-04 92 views
1

我已經成功實施其上的所有滾動在一起很好地縮放當多個圖表區域多個系列。的MSChart水平最小值x和最大x值

當數據被第一次給出的最小和最大X值(日期/時間)由我從SQL中提取的數據確定。用戶雖然可以選擇放大圖形,此時會出現水平滾動條。到現在爲止還挺好。

我想實現的是在我的WinForm上有兩個文本控件,它會顯示當前正在查看的最小值和最大值X,當用戶向左或向右移動水平滾動條時,這些值應該會自動更新。

我應該查看哪些屬性和方法?

感謝, KH

回答

0

您可以使用AxisViewChanged事件,並檢查是在可見光範圍內的一系列點。這裏是我的意思的一個例子:

void chart1_AxisViewChanged(object sender, System.Windows.Forms.DataVisualization.Charting.ViewEventArgs e) 
{ 
    var left = e.ChartArea.CursorX.SelectionStart; 
    var right = e.ChartArea.CursorX.SelectionEnd; 
    var top = e.ChartArea.CursorY.SelectionStart; 
    var bottom = e.ChartArea.CursorY.SelectionEnd; 

    foreach (var series in this.chart1.Series) 
    { 
     if (series.ChartArea == e.ChartArea.Name) 
     { 
      var pointsInRange = series.Points.Where(p => p.XValue <= right && p.XValue >= left && 
                  p.YValues[0] <= top && p.YValues[0] >= bottom); 
      if (pointsInRange.Any()) 
      { 
       var minY = pointsInRange.Min(p => p.YValues[0]); 
       var maxY = pointsInRange.Max(p => p.YValues[0]); 

       // print the points in your textbox 
       textBox1.AppendText("Series: " + series.Name + " min visible Y=" + minY + " max visibleY=" + maxY + Environment.NewLine); 
      } 
     } 
    } 
} 
+0

謝謝,這讓我足以讓我的牙齒進入。 – user1480025

+0

@ user1480025:很高興能有所幫助。如果你認爲這是一個很好的答案,你應該考慮加快或接受它;) – digEmAll

相關問題