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

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

它得到错误的坐标!有解决方案或解决方法吗?

谢谢

4

1 回答 1

1

ViewBox不会更改其子项的任何属性,包括leftCanvas和 top 值。您需要使用孩子的实际坐标,而不仅仅是附加的属性值。

您可以TranslatePoint直接调用孩子,只要它是UIElement. 要引用孩子的左上角,您可以使用 (0, 0) 这是默认值,Point这样new Point()就足够了。

        Point p = child.TranslatePoint(new Point(), viewboxInstanceParent);

祝你好运,

编辑:这是这段代码的视频:ViewboxChildPosition

于 2010-03-23T17:53:49.717 回答