我有一个理论上的矩形网格,可能看起来像这样:
但是我手头只有一堆矩形对象:
var shapes = new List<Rectangle>();
shapes.Add(new Rectangle(10, 10, 580, 380));
shapes.Add(new Rectangle(15, 20, 555, 100));
shapes.Add(new Rectangle(35, 50, 40, 75));
// ...
我想要做的是构建一个类似DOM的结构,每个矩形都有一个ChildRectangles属性,其中包含在网格内的子矩形。
最终结果应该允许我将这样的结构转换为XML,类似于:
<grid>
<shape rectangle="10, 10, 580, 380">
<shape rectangle="5, 10, 555, 100">
<shape rectangle="20, 30, 40, 75"/>
</shape>
</shape>
<shape rectangle="etc..."/>
</grid>
但主要是我想要一个类似DOM的内存结构,输出的XML只是我可能使用这种结构的示例。
我卡住的是如何高效地确定哪些矩形属于哪些矩形。
注意:没有矩形部分包含在另一个矩形中,它们总是完全在另一个矩形内。
编辑:通常会有数百个矩形,我应该只遍历每个矩形以查看它是否被另一个矩形包含吗?
编辑:有人建议使用Contains(这不是我最好的时刻,错过了!),但我不确定如何最好地构建DOM。例如,取第一个矩形的孙子,父代确实包含孙子,但它不应该是直接的孩子,它应该是父级的第一个孩子的子级。