0

我正在 Visual Studio 2010 应用程序中设计一个 Wpf,它在 Canvas 中实现缩放功能。事件是:

  < 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;
            }
        } 

问题是当我在画布中缩放图形时,整个画布正在扩展并占据整个空间,这是不希望的。因为我只想放大画布而不是扩展它,而且我还定义了最大高度和最大宽度。

请帮我解决这个问题。

4

1 回答 1

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;
        }

    } 
于 2013-05-21T04:37:08.037 回答