2013-05-21 61 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; 
     } 

    }