0

Canvasにズーム機能を実装しているVisual Studio 2010アプリケーションで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;
            }
        } 

問題は、キャンバス内の図をズームしているときに、キャンバス全体が拡大し、望ましくないスペース全体を占有していることです。キャンバスを拡大しないように拡大したいだけで、最大高さと最大幅も定義しました。

親切にこれで私を助けてください。

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 に答える