1

コードを使用して Silverlight 5 アプリケーションで線オブジェクトを作成しました。この線を中心点を中心に回転させたいのですが、動作がおかしいため、線が画面の左上隅を中心に回転しています。これが私のコード:

                    RotateTransform rotate = new RotateTransform();
                rotate.Angle = myArrowAngle[i] + off_x;
                myLines[i].RenderTransformOrigin = new Point(0.5d, 0.5d);
                myLines[i].RenderTransform = rotate;

何がうまくいかないのですか?線オブジェクトの RenderTransferOrigin を設定しましたが、運がありません。回転変換の後または前にオブジェクトを移動する必要がありますか? この回転はどのように行われますか?モデル空間またはワールド空間で?ラインがキャンバスの中心ではなく(0,0)ポイントを中心に回転しているため、ワールド空間で回転しているようです

4

1 に答える 1

2

変換原点を 0.5,0.5 に設定すると、線の「境界ボックス」に対して相対的に設定されますが、これは必ずしも線自体の中心と一致するとは限りません。

次の例を参照してください。

<Canvas>
    <Line X1="0" Y1="50" X2="100" Y2="50"
          StrokeThickness="4" Stroke="Red" RenderTransformOrigin="0.5,0.5">
        <!--<Line.RenderTransform>
            <RotateTransform Angle="45" CenterX="0.5" CenterY="0.5"  />
        </Line.RenderTransform>-->
    </Line>
</Canvas>

キャンバスの線

変換のコメントを外すと、そのボックス内の小さな円がある場所から適用されます。

それはあなたが経験していることを説明できますか?

于 2013-03-29T02:34:19.170 に答える