代码之家  ›  专栏  ›  技术社区  ›  sudarsanyes

wpf中选定控件的边框

  •  0
  • sudarsanyes  · 技术社区  · 14 年前

    有没有一种简单的方法可以找到覆盖一组控件所需的矩形(区域和位置)?? VisualTreeHelper.GetDescandentBounds视图()

    谢谢

    1 回复  |  直到 14 年前
        1
  •  2
  •   Bubblewrap    14 年前

    Rect有一个 Union(Rect) 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;
    }       
    

    已编辑代码:它现在将考虑单个视觉对象相对于给定视觉对象的位置。