gpt4 book ai didi

c# - 如何确定一个矩形是否完全包含在另一个矩形中?

转载 作者:太空宇宙 更新时间:2023-11-04 04:53:24 25 4
gpt4 key购买 nike

我有一个重叠矩形的理论网格,可能看起来像这样:

grid layout

但我所要做的只是一组 Rectangle 对象:

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 只是我如何使用这种结构的一个示例。

我坚持的一点是如何有效地确定哪些矩形属于哪个。

注意 没有矩形部分包含在另一个矩形中,它们总是完全包含在另一个矩形中。

编辑 通常会有数百个矩形,我是否应该遍历每个矩形以查看它是否被另一个矩形包含?

编辑 有人建议包含(不是我最好的时刻,错过了!),但我不确定如何最好地构建 DOM。比如拿第一个矩形的孙子,父级确实包含孙子,但不应该是直接子级,应该是父级第一个子级的子级。

最佳答案

使用 RectangleContains()

Rectangle rect1, rect2;
// initialize them
if(rect1.Continas(rect2))
{
// do...
}

更新:
供将来引用...
有趣的是,Rectangle 也有 IntersectsWith(Rectangle rect),以防您想要检查一个矩形是否与另一个矩形部分碰撞。

关于c# - 如何确定一个矩形是否完全包含在另一个矩形中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12438351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com