2013-01-14 67 views

回答

1

此功能已內置於D3中,如果將鼠標懸停在其中一個軸上,並執行鼠標滾輪滾動,縮放僅與您懸停的軸相關。如果你想在你的代碼中複製它,你可以在源代碼中看到它的例子。

+0

我沒有注意到回答另一個問題之前這一職務。所以如果你需要限制縮放,那麼也許我的回答會有幫助。 http://stackoverflow.com/questions/19927086/dynamicdatadisplay-zoom-and-tooltips-on-realtime-charts-with-syncronous-x-axis/21962113#21962113 –

0

縮放功能在「MouseNavigation.cs」中實現。 MouseWheel處理程序將調用底層函數:

Viewport.Visible = Viewport.Visible.Zoom(zoomTo, zoomSpeed); 

幸運的是,有一個ZoomX函數可以滿足您的需求。 因此只是從你的繪圖儀刪除MouseNavigation,然後再實現自己的如下:

// Remove mouse navigation 
    plotter.Children.Remove(plotter.MouseNavigation); 

    // ZoomX when wheeling mouse 
    private void plotter_MouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e) 
    { 
     if (!e.Handled) 
     { 
      Point mousePos = e.GetPosition(this); 
      Point zoomTo = mousePos.ScreenToViewport(plotter.Viewport.Transform); 

      double zoomSpeed = Math.Abs(e.Delta/Mouse.MouseWheelDeltaForOneLine); 
      zoomSpeed *= 1.2; 
      if (e.Delta < 0) 
      { 
       zoomSpeed = 1/zoomSpeed; 
      } 

      plotter.Viewport.SetChangeType(ChangeType.Zoom); 
      plotter.Viewport.Visible = plotter.Viewport.Visible.ZoomX(zoomTo, zoomSpeed); 
      plotter.Viewport.SetChangeType(); 
      e.Handled = true; 
     } 
    }