有没有一种简单的方法可以找到覆盖一组控件所需的矩形(区域和位置)?VisualTreeHelper.GetDescandentBounds()工作正常,但没有重载的方法我可以指定它应该考虑查找边界矩形的控件。任何简单的解决方案将不胜感激。
谢谢
有没有一种简单的方法可以找到覆盖一组控件所需的矩形(区域和位置)?VisualTreeHelper.GetDescandentBounds()工作正常,但没有重载的方法我可以指定它应该考虑查找边界矩形的控件。任何简单的解决方案将不胜感激。
谢谢
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;
}
编辑后的代码:它现在将考虑各个视觉对象相对于给定视觉对象的位置。