【问题标题】:How can I get the bounds of a Visual relative to another visual's coordinate system?我怎样才能得到一个视觉相对于另一个视觉坐标系的边界?
【发布时间】:2012-12-21 08:05:14
【问题描述】:

在实现IScrollInfoMakeVisible 成员时,我遇到了一个问题。我需要获取Visual 的边界相对于正在滚动的面板的坐标。

现在如果这是一个UIElement,这将很容易,因为我只需调用它的“TranslatePoint”方法,但UIElementVisual 的子类,而不是相反,所以我可以'不一定要指望这一点。

如何实现这一目标?

【问题讨论】:

    标签: wpf interface coordinate-transformation


    【解决方案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);
    

    【讨论】:

    • 完美!正是我想要的。谢谢!我直接将 TransformBounds 与传入 IScrollInfo.MakeVisible 调用的矩形一起使用,效果很好!
    猜你喜欢
    • 2013-01-08
    • 1970-01-01
    • 2018-02-22
    • 2022-01-18
    • 1970-01-01
    • 2015-12-15
    • 2015-06-08
    • 1970-01-01
    • 2018-01-19
    相关资源
    最近更新 更多