在实施IScrollInfo
's MakeVisible
member 时,我遇到了一个问题。我需要获取Visual
相对于正在滚动的面板的边界坐标。
现在,如果这是 a UIElement
,这将很容易,因为我只需调用它的 'TranslatePoint' 方法,但UIElement
它是 的子类Visual
,而不是相反,所以我不一定能指望它。
如何实现这一目标?
在实施IScrollInfo
's MakeVisible
member 时,我遇到了一个问题。我需要获取Visual
相对于正在滚动的面板的边界坐标。
现在,如果这是 a UIElement
,这将很容易,因为我只需调用它的 'TranslatePoint' 方法,但UIElement
它是 的子类Visual
,而不是相反,所以我不一定能指望它。
如何实现这一目标?
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);