2013-05-21 72 views
0

我正在设计一个在Canvas中实现缩放功能的Visual Studio 2010应用程序中的Wpf。 事件是:如何在缩放时限制wpf中的画布大小

< canvas MouseWheel="Canvas_MouseWheel" /> 

和xaml.cs后端是:

const double ScaleRate = 1.1; 

    private void Canvas_MouseWheel(object sender, MouseWheelEventArgs e) 
     { 

      if (e.Delta > 0) 
      { 
       st.ScaleX *= ScaleRate; 
       st.ScaleY *= ScaleRate; 
      } 
      else 
      { 
       st.ScaleX /= ScaleRate; 
       st.ScaleY /= ScaleRate; 
      } 
     } 

的问题是,当我放大画布图中,整个画布正在扩大,并采取了整个空间这是不受欢迎的。因为我只想放大画布而不是展开它,并且我还定义了最大高度和最大宽度。

请帮助我。

+1

你能向我们提供相关的XAML? – Onots

回答

1

也许:

private void Canvas_MouseWheel(object sender, MouseWheelEventArgs e) 
    { 
     double maxScale = 2.0; 

     if (e.Delta > 0) 
     { 
      st.ScaleX *= ScaleRate; 
      st.ScaleY *= ScaleRate; 
     } 
     else 
     { 
      st.ScaleX /= ScaleRate; 
      st.ScaleY /= ScaleRate; 
     } 

     if(st.ScaleX > maxScale) 
     { 
      st.ScaleX = maxScale; 
     } 

     if(st.ScaleY > maxScale) 
     { 
      st.ScaleY = maxScale; 
     } 

    }