C# 获取使用LINQ绑定多段线集合的左上角和右下角点

C# 获取使用LINQ绑定多段线集合的左上角和右下角点,c#,linq,windows-phone,shape,C#,Linq,Windows Phone,Shape,所以我有一个多段线的集合,每个多段线包含几个点 我想从这些多段线集合中获得最小和最大的X,Y点,这样我就可以计算出包含多段线的边界矩形。如何使用LINQ实现这一点 多段线是画布的子对象。在所附图片中,绘制了三条红色多段线。黄色矩形是假想的边界 var polylines = this.CanvasDraw.Children.Cast<Polyline>(); 您可以使用选择多个将所有行中的点收集到一个集合中,然后只需使用Min()和Max()来提取极端值: var polyline

所以我有一个多段线的集合,每个多段线包含几个点

我想从这些多段线集合中获得最小和最大的X,Y点,这样我就可以计算出包含多段线的边界矩形。如何使用LINQ实现这一点

多段线是画布的子对象。在所附图片中,绘制了三条红色多段线。黄色矩形是假想的边界

var polylines = this.CanvasDraw.Children.Cast<Polyline>();

您可以使用
选择多个
将所有行中的点收集到一个集合中,然后只需使用
Min()
Max()
来提取极端值:

var polylines = this.CanvasDraw.Children.Cast<Polyline>();

// project all points into a single list
var allPoints = polylines.SelectMany(pl=>pl.Points).ToList();

// get mins and maxes
var minX = allPoints.Min(p=>p.X);
var minY = allPoints.Min(p=>p.Y);
var maxX = allPoints.Max(p=>p.X);
var maxY = allPoints.Max(p=>p.Y);

// create bounding points
Point Topleft = new Point(minX, minY);
Point BottomRight = new Point(maxX, maxY);
var polylines=this.CanvasDraw.Children.Cast();
//将所有点投影到单个列表中
var allPoints=polylines.SelectMany(pl=>pl.Points.ToList();
//得到分钟和最大值
var minX=allPoints.Min(p=>p.X);
var minY=allPoints.Min(p=>p.Y);
var maxX=allPoints.Max(p=>p.X);
var maxY=allPoints.Max(p=>p.Y);
//创建边界点
点左上=新点(最小值,最小值);
点BottomRight=新点(maxX,maxY);
var polylines = this.CanvasDraw.Children.Cast<Polyline>();

// project all points into a single list
var allPoints = polylines.SelectMany(pl=>pl.Points).ToList();

// get mins and maxes
var minX = allPoints.Min(p=>p.X);
var minY = allPoints.Min(p=>p.Y);
var maxX = allPoints.Max(p=>p.X);
var maxY = allPoints.Max(p=>p.Y);

// create bounding points
Point Topleft = new Point(minX, minY);
Point BottomRight = new Point(maxX, maxY);