WPF:Viewbox和TranslatePoint

时间:2010-03-23 15:39:42

标签: wpf viewbox

  1. 我有一个带有Canvas Child的Viewbox,
  2. 我有Viewbox的Stretch属性来填充,
  3. 我更改了Viewbox的宽度和高度,
  4. 我需要相对于Viewbox父级获取Canvas中子项的位置 我试过了:

    Point p = viewboxInstance.TranslatePoint(new Point(Canvas.GetLeft(child),Canvas.GetTop(child)),viewboxInstanceParent);

  5. 坐标错误! 有解决方案或解决方法吗?

    由于

1 个答案:

答案 0 :(得分:1)

ViewBox不会更改其子级的任何属性,包括Canvas左侧和顶部值。您需要使用子项的实际坐标,而不仅仅是附加的属性值。

只要是TranslatePoint,您就可以直接在孩子身上致电UIElement。要引用子项的左上角,可以使用(0,0)这是Point的默认值,因此new Point()就足够了。

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

编辑: 以下是此代码的实际视频:ViewboxChildPosition