WPF:Viewbox和TranslatePoint 我有一个带有画布子对象的Viewbox 我要填充Viewbox的拉伸属性 我已经更改了Viewbox的宽度和高度

WPF:Viewbox和TranslatePoint 我有一个带有画布子对象的Viewbox 我要填充Viewbox的拉伸属性 我已经更改了Viewbox的宽度和高度,wpf,viewbox,Wpf,Viewbox,我需要获取画布中的子对象相对于Viewbox父对象的位置 我试过: 点p=viewboxInstance.TranslatePoint(新点(Canvas.GetLeft(子)、Canvas.GetTop(子))、viewboxInstanceParent) 它得到了错误的坐标! 是否有解决方案或解决方法 谢谢查看框不会更改其子项的任何属性,包括画布左值和顶值。您需要使用子对象的实际坐标,而不仅仅是附着的特性值 您可以直接在子元素上调用TranslatePoint,只要它是UIElement。要

我需要获取画布中的子对象相对于Viewbox父对象的位置 我试过:

点p=viewboxInstance.TranslatePoint(新点(Canvas.GetLeft(子)、Canvas.GetTop(子))、viewboxInstanceParent)

它得到了错误的坐标! 是否有解决方案或解决方法


谢谢

查看框不会更改其子项的任何属性,包括
画布
左值和顶值。您需要使用子对象的实际坐标,而不仅仅是附着的特性值

您可以直接在子元素上调用
TranslatePoint
,只要它是
UIElement
。要引用子对象的左上角点,可以使用(0,0),这是
点的默认值,因此
新建点()
就足够了

        Point p = child.TranslatePoint(new Point(), viewboxInstanceParent);
祝你好运

编辑:
下面是这段代码的一段视频:

不,它不起作用,它表明Viewbox在处理TranslatePoint时总是处理内部内容,因为它们没有被拉伸。我用透视变换数学解决了它,QuadToQuad矩阵。我添加了一个视频链接,显示了我的结果。如果这对你不起作用,很抱歉。如果你有这样的问题,你应该把它贴出来,马克是其他可能有同样问题的人的答案。