移動および回転する図形 (グリッド) があります。それらは親グリッド (名前: フィールド) に配置されたので、移動には 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
}
フィールドの左上隅に対する形状の左上隅の座標を取得したいのですが、何かがうまくいかない回転の後です。
お願い助けて。