如何获得Visual相对于另一个视觉坐标系的界限?

时间:2012-12-20 19:54:56

标签: wpf interface coordinate-transformation

在实施IScrollInfo的{​​{1}}成员时,我遇到了一个问题。我需要获取相对于正在滚动的面板的MakeVisible边界的坐标。

现在如果这是一个Visual,这很容易,因为我只是称它为'TranslatePoint'方法,但UIElementUIElement的子类,而不是其他方式周围,​​所以我不一定指望它。

如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

Visual提供TransformToVisual方法,该方法返回可用于变换点或矩形的GeneralTransform

var transform = visual1.TransformToVisual(visual2);
var point = transform.Transform(new Point(...));

如果visual1是ContainerVisual,则可以执行以下操作:

var bounds = transform.TransformBounds(visual1.ContentBounds);

var bounds = transform.TransformBounds(visual1.DescendantBounds);