Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight 如何确定图元相对于父图元中心的位置_Silverlight - Fatal编程技术网

Silverlight 如何确定图元相对于父图元中心的位置

Silverlight 如何确定图元相对于父图元中心的位置,silverlight,Silverlight,我知道我可以通过以下代码获得元素相对于其父元素的位置: var generalTransform = childElement.TransformToVisual( parentElement ); var childToParentCoordinates = generalTransform.Transform( new Point( 0, 0 ) ); 我意识到如果孩子在父母的左边或上面,x和y都是负数 然而,我需要的是孩子中心相对于家长中心的点,这样家长中心被认为是(0,0)点。因此,位

我知道我可以通过以下代码获得元素相对于其父元素的位置:

var generalTransform = childElement.TransformToVisual( parentElement );
var childToParentCoordinates = generalTransform.Transform( new Point( 0, 0 ) );
我意识到如果孩子在父母的左边或上面,x和y都是负数

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

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

我希望这会有所帮助。

考虑一下,要将左上角坐标转换为中心坐标,您需要做的就是添加大小/2。