我知道我可以通过以下代码获得与其父级顶部相对应的元素的位置:
var generalTransform = childElement.TransformToVisual( parentElement );
var childToParentCoordinates = generalTransform.Transform( new Point( 0, 0 ) );
我意识到,如果孩子离开或高于父母,则x和y将为负数。
然而,我需要的是孩子的中心相对于父母中心的点,这样父母的中心被认为是(0,0)point
。因此,它的父母中心上方和左侧的对象将是(负的,负的)point
,而右侧和下方的对象显然是(正,正)point
答案 0 :(得分: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
我希望这会有所帮助。