如何确定相对于父级中心的元素位置

时间:2013-01-18 16:52:14

标签: silverlight

我知道我可以通过以下代码获得与其父级顶部相对应的元素的位置:

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

我意识到,如果孩子离开或高于父母,则x和y将为负数。

然而,我需要的是孩子的中心相对于父母中心的点,这样父母的中心被认为是(0,0)point。因此,它的父母中心上方和左侧的对象将是(负的,负的)point,而右侧和下方的对象显然是(正,正)point

1 个答案:

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

我希望这会有所帮助。