2014-01-15 76 views
0

所以我有一個圖表,有時這個圖表在Y值方面上升到1000,而且很難看到單個的點/軸截取點。使用鼠標滾輪放大

這將允許我點擊並拖動一個區域進行放大,但是這會遺漏X和Y值/區間,並且還會在我不想要的圖形中添加滾動條!

Chart1.ChartAreas(0).CursorX.IsUserSelectionEnabled = True 
Chart1.ChartAreas(0).CursorY.IsUserSelectionEnabled = True 

是否有實現這個使用鼠標滾輪,然後點擊拖動,而不是使用滾動條的方式?

+0

你能確認你正在使用的圖表控制嗎? – owen79

+0

我正在使用MS Chart Control,這是一個標準的Visual Studio 2012 – user3198038

+0

[本文] [1]有工作代碼並引用了MSDN文檔。 [1]:http://stackoverflow.com/questions/18892201/how-do-you-use-the-zooming-ui-in-mschart-for-net – owen79

回答

0

我找到了答案在另一個問題 Enabling mouse wheel zooming in a Microsoft Chart Control

,但它是在C#..我把它轉換到VB.NET

Private Sub growthChart_MouseEnter(sender As Object, e As EventArgs) Handles growthChart.MouseEnter 
    growthChart.Focus() 
End Sub 


Private Sub growthChart_MouseWheel(sender As Object, e As MouseEventArgs) Handles growthChart.MouseWheel 
    Try 
     With growthChart 
      If (e.Delta < 0) Then 
       .ChartAreas(0).AxisX.ScaleView.ZoomReset() 
       .ChartAreas(0).AxisY.ScaleView.ZoomReset() 
      End If 

      If (e.Delta > 0) Then 
       Dim xMin As Double = .ChartAreas(0).AxisX.ScaleView.ViewMinimum 
       Dim xMax As Double = .ChartAreas(0).AxisX.ScaleView.ViewMaximum 
       Dim yMin As Double = .ChartAreas(0).AxisY.ScaleView.ViewMinimum 
       Dim yMax As Double = .ChartAreas(0).AxisY.ScaleView.ViewMaximum 
       Dim posXStart As Double = (.ChartAreas(0).AxisX.PixelPositionToValue(e.Location.X) _ 
          - ((xMax - xMin) _ 
          /4)) 
       Dim posXFinish As Double = (.ChartAreas(0).AxisX.PixelPositionToValue(e.Location.X) _ 
          + ((xMax - xMin) _ 
          /4)) 
       Dim posYStart As Double = (.ChartAreas(0).AxisY.PixelPositionToValue(e.Location.Y) _ 
          - ((yMax - yMin) _ 
          /4)) 
       Dim posYFinish As Double = (.ChartAreas(0).AxisY.PixelPositionToValue(e.Location.Y) _ 
          + ((yMax - yMin) _ 
          /4)) 
       .ChartAreas(0).AxisX.ScaleView.Zoom(posXStart, posXFinish) 
       .ChartAreas(0).AxisY.ScaleView.Zoom(posYStart, posYFinish) 
      End If 
     End With 


    Catch ex As System.Exception 
     MsgBox(ex.Message) 
    End Try 
End Sub 

它在放大,但放大了它需要運作良好調整。