2017-04-26 46 views
0

我有一種方法可以放大或縮小WPF中的圖像。它看起來像這樣:放大WPF中的圖像

private void onMouseWheel_Scroll(object sender, MouseWheelEventArgs e) 
{ 
    var position = e.MouseDevice.GetPosition(CctvImage); 

    var renderTransformValue = CctvImage.RenderTransform.Value; 
    if (e.Delta > 0) 
     renderTransformValue.ScaleAtPrepend(1.1, 1.1, position.X, position.Y); 
    else 
     renderTransformValue.ScaleAtPrepend(1/1.1, 1/1.1, position.X, position.Y); 

    CctvImage.RenderTransform = new MatrixTransform(renderTransformValue); 
} 

這工作正常放大,我喜歡在鼠標是專門在屏幕上放大的功能。

但是,縮小用戶時可以縮小圖像佔用屏幕的位置。這意味着要回到佔據整個窗口的圖像原始位置是非常困難的。他們能夠得到的地方,無論是圖像的大部分都沒有在屏幕上或存在大量的空白點,這是我所描述的例子:

enter image description here

正如你可以看到屏幕上的圖像很小,而我想阻止用戶進一步縮小圖像佔據整個窗口的位置。

有沒有一種方法可以實現呢?

回答

0

如何重置前的轉換,並保持自己的「規模」的價值,你可以對證「最大規模」和「最小規模」,這樣的事情:

double scale = 1.0; 
    double minScale = 0.5; 
    double maxScale = 2.0; 

    private void image_MouseWheel(object sender, MouseWheelEventArgs e) 
    { 
     // back to normal (maybe this isn't needed since we're making a new one below anyway) 
     CctvImage.RenderTransform = null; 

     var position = e.MouseDevice.GetPosition(CctvImage); 

     if (e.Delta > 0) 
      scale += 0.1; 
     else 
      scale -= 0.1; 

     if (scale > maxScale) 
      scale = maxScale; 
     if (scale < minScale) 
      scale = minScale; 

     CctvImage.RenderTransform = new ScaleTransform(scale, scale, position.X, position.Y); 


    } 
0

我猜你想以防止Image從原始大小縮小,對不對?那麼你應該確保秤不會小於1

double currentScale = 1.0; 
private void onMouseWheel_Scroll(object sender, MouseWheelEventArgs e) 
{ 
    var position = e.MouseDevice.GetPosition(CctvImage); 
    var renderTransformValue = CctvImage.RenderTransform.Value; 
    if (e.Delta > 0) 
    { 
     currentScale += 0.1; 
    } 
    else if (e.Delta < 0) 
    { 
     currentScale -= 0.1; 
     if (currentScale < 1.0) 
      currentScale = 1.0; 
    } 
    CctvImage.RenderTransform = new ScaleTransform(currentScale, currentScale, position.X, position.Y); 
}