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;
}
已编辑代码:它现在将考虑单个视觉对象相对于给定视觉对象的位置。