0

移動および回転する図形 (グリッド) があります。それらは親グリッド (名前: フィールド) に配置されたので、移動には TranslateX を使用し、回転には次のようにします。

private void RightTap_Rotate(object sender, RightTappedRoutedEventArgs e)
    {
        var obj = sender as Grid;
        var objTransform = (CompositeTransform)obj.RenderTransform;
        Point cursorPos = e.GetPosition(obj);

        objTransform.CenterX = cursorPos.X;
        objTransform.CenterY = cursorPos.Y;

        objTransform.Rotation += 90;     
    }

つまり、Figure をその中心を中心に回転させます。しかし、回転した後、フィギュアとフィールドの正しい相対位置を見つけることができません。私はそれを使用します:

private void Object_ManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e)
    {
        var obj = sender as Grid;
        var objTransform = (CompositeTransform)obj.RenderTransform;

        var transform = Field.TransformToVisual(obj);
        Point relativePosition = transform.TransformPoint(new Point(0, 0));

        //then I use relativePosition.X/Y
    }

フィールドの左上隅に対する形状の左上隅の座標を取得したいのですが、何かがうまくいかない回転​​の後です。

お願い助けて。

4

1 に答える 1

1

あなたのコードでは、ポイントを親から子オブジェクトに変換していました。代わりに、子オブジェクトから親オブジェクトに変換する必要があります。

var obj = sender as Grid;

var transform = obj.TransformToVisual(Field);
Point parentPoint = transform.TransformPoint(new Point(0, 0));
于 2013-10-11T16:11:13.110 に答える