2

キャンバス上で選択された複数のオブジェクトをスケーリングするためのアルゴリズムを理解しようとしています (Visio の動作に似ています)。たとえば、アプリケーションで次の選択したオブジェクトがあるとします。

次に、バウンディング ボックスの右下のハンドルをドラッグして、選択したオブジェクトのサイズを大きくすると、次の結果が得られます。

ここに画像の説明を入力

私の質問は次のとおりです。

  1. 各オブジェクトに適用されるスケーリングの量を取得するにはどうすればよいですか?
  2. 各オブジェクトに適用される移動量を取得するにはどうすればよいですか?

この質問が理にかなっていることを願っています。そして、あなたが助けてくれることを願っています。

4

1 に答える 1

0

こんにちは、翻訳はないと思います。スケーリングのみがあります。これを行う簡単な方法の 1 つは、(上記の TextBoxes) のようにオブジェクトの幅と高さを保持し、そのオブジェクトのスケーリング値を取得する場合です。

ScaleTransform scale = new ScaleTransform();
        //_text is the scaled object
        scale.ScaleX = text.ActualWidth - _width; //_width is width of the textbox at beginning.
        scale.ScaleY = text.ActualHeight - _height; //_height is the height of textbox at the beginning.

これにより、開始時の TextBox の幅と高さに対応するオブジェクトのスケーリング量が得られます (つまり、ウィンドウが初期化されたとき)。これでアイデアが得られると思います。

于 2012-07-27T02:31:50.823 に答える