2010-02-18 67 views
0

有沒有什麼辦法在深度變焦中對多尺度圖像進行固定變焦?即單擊一次以將點X,Y縮放到2x,再次單擊以恢復到原始位置和縮放級別?固定深度變焦

我寫了代碼放大和縮小,但通過縮放過程中途調用zoomaboutlogicalpoint會導致縮小得太遠(我猜是由於鼠標移動事件中的1/2因素 - 我可以獲取縮放級別?)。另外,我想縮小圖像爲中心(我想我改變了點放大到圖像中途,但這似乎並沒有工作,也許我需要考慮視口位置?)

例如,

私人無效msi_MouseLeftButtonDown(對象發件人,MouseButtonEventArgs E) {
點P = e.GetPosition(MSI); Zoom(2,p); }

私人無效msi_MouseLeftButtonUp(對象發件人,MouseButtonEventArgs E) {
點P = e.GetPosition(MSI); Zoom(1/2,p); }

public void Zoom(double zoom, Point pointToZoom) 
    { 
     bool zoomingIn = zoom > 1; 
     bool zoomingOut = zoom < 1; 
     double minViewportWidth = 0.05; 
     double maxViewportWidth = 1; 

     if (msi.ViewportWidth < minViewportWidth && zoomingIn) 
     { 
      return; 
     } 

     if (msi.ViewportWidth > maxViewportWidth && zoomingOut) 
     { 
      return; 
     } 

     Point logicalPoint = this.msi.ElementToLogicalPoint(pointToZoom); 
     this.msi.ZoomAboutLogicalPoint(zoom, logicalPoint.X, logicalPoint.Y); 

    } 

謝謝。

回答

0

重新縮小之前轉換原點似乎做的伎倆:

msi.RenderTransformOrigin =新的點(msi.Height/2,msi.Width/2);