2010-02-18 50 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);