wpf 中选定控件的边界矩形

发布于 2024-09-18 08:47:05 字数 154 浏览 12 评论 0原文

有没有一种简单的方法来找到覆盖一组控件所需的矩形(区域和位置)? VisualTreeHelper.GetDecandentBounds() 工作正常,但没有重载方法可以让我指定在查找边界矩形时应考虑的控件。任何简单的解决方案将不胜感激。

谢谢

Is there a simple way to find the rectangle (area and location) that would be required to cover a set of control?? VisualTreeHelper.GetDescandentBounds() works fine, but there are no overloaded methods where I can specify the controls that it should consider for finding the bounds rectangle. Any simple solution will be greatly appreciated.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

会发光的星星闪亮亮i 2024-09-25 08:47:05

Rect 有一个 Union(Rect) 方法,该方法放大当前矩形以包含第二个矩形。使用 linq(不要忘记将 using System.Linq; 添加到代码文件中),获取视觉效果列表的矩形列表也相当简单:

private Rect GetBoundingRect(Visual relativeTo, List<Visual> visuals)
{
    Vector relativeOffset  = new Point() - relativeTo.PointToScreen(new Point());

    List<Rect> rects = visuals
        .Select(v => new Rect(v.PointToScreen(new Point()) + relativeOffset, VisualTreeHelper.GetDescendantBounds(v).Size))
        .ToList();

    Rect result = rects[0];
    for (int i = 1; i < rects.Count; i++)
        result.Union(rects[i]);
    return result;
}       

编辑后的代码:它现在将占据考虑相对于给定视觉的个体视觉。

Rect has a Union(Rect) method, which enlarges the current rect to also include the second rectangle. With linq (dont forget to add using System.Linq; to your code file) it's also fairly simple to get a list of rectangles for a list of visuals:

private Rect GetBoundingRect(Visual relativeTo, List<Visual> visuals)
{
    Vector relativeOffset  = new Point() - relativeTo.PointToScreen(new Point());

    List<Rect> rects = visuals
        .Select(v => new Rect(v.PointToScreen(new Point()) + relativeOffset, VisualTreeHelper.GetDescendantBounds(v).Size))
        .ToList();

    Rect result = rects[0];
    for (int i = 1; i < rects.Count; i++)
        result.Union(rects[i]);
    return result;
}       

Edited code: It will now take the position of the individual visuals into account relative to the given visual.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文