0

次のコードを使用して、要素の位置を親の上と左に相対的に取得できることを知っています。

var generalTransform = childElement.TransformToVisual( parentElement );
var childToParentCoordinates = generalTransform.Transform( new Point( 0, 0 ) );

そして、子が親の左側または上にある場合、x と y は負になることに気付きました。

ただし、必要なのは、親の中心に対する子の中心のポイントです。そのような親の中心は (0,0) と見なされpointます。したがって、その親の中心の左上にあるオブジェクトは (負、負)pointになり、右と下は明らかに (正、正) になります。point

4

1 に答える 1

1
Point relativePoint = child.TransformToAncestor(parent)
                      .Transform(new Point(0, 0));

        Point parentCenter = new Point(parent.ActualWidth / 2, parent.ActualHeight / 2);
        Point childCenter = new Point(relativePoint.X + (child.ActualWidth / 2), relativePoint.Y + (child.ActualHeight / 2));
        //Now you can compare them as you want

これが役立つことを願っています。

于 2013-01-18T21:36:59.770 に答える