0

我知道我可以得到一个元素相对于它的父元素的位置 top 和 left 使用以下代码:

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 回答