翻译X,Y坐标(Translating X,Y Coordinate)

2019-10-23 14:17发布

我现在有一个包含有一定的X项目的用户控制,Y坐标和有限制到什么这些点必须在。 在这种情况下这些位置是0> X> 40和0> Y> 80(40x80)。 我在托管这些项目中的控制是动态的,但具有基于窗口大小一定的纵横比。 我需要翻译的X和Y坐标转换成用户控件中的相对位置。 任何帮助是极大apprecaited! 提前致谢! 如果它的事项/帮助,我使用Silverlight。

Answer 1:

您可以使用GeneralTransform确定的UIElement的相对于容器位置。 这里有一个片段:

    /// <summary>
    /// Gets the position of the specified element's top left corner, relative to the specified container.
    /// </summary>
    /// <param name="element"></param>
    /// <param name="container"></param>
    public static Point GetPosition(UIElement element, UIElement container)
    {
        if (element == null)
            throw new ArgumentNullException("element");
        if (container == null)
            throw new ArgumentNullException("container");
        var gt = element.TransformToVisual(container);
        var position = gt.Transform(new Point(0, 0));
        return position;
    }

干杯,亚历克斯

[编辑]事实上,检查“容器” null是不必要 - TransformToVisual也将接受null作为参数。 另一个问题:TransformToVisual将引发ArgumentException例如,当“元素”是不可见的,目前是不是在视觉树等等等等。不幸的是,我无法找到一种方法来确定是否TransformToVisual会抛出异常前实际调用它的“元件”。 所以,我干脆换到TransformToVisual调用在try-catch块,并吞噬了ArgumentException的,因为它是相当无用反正恕我直言。



文章来源: Translating X,Y Coordinate