0

我有一个 wx.Panel,里面有多个孩子。

当放置另一个孩子时,我如何判断它是否没有踩到已经放置的孩子?

(我的意思是我可以想到我遍历孩子列表的解决方案,获取他们所有的位置和大小并进行数学运算......但我想知道是否还没有更简单的解决方案)

[编辑]:我需要在父面板上有多个带有轮廓的面板,以及连接子面板的线条。这个想法是能够判断一条线是否没有穿过另一个面板。

4

2 回答 2

3

我的建议是通过使用 sizers 放置孩子来避免这个问题。轻松多了。

我从您的编辑中看到,您并不关心重叠的小部件,正如您的问题的标题所示,而是一条线是否与小部件重叠。

我对这个不同的问题的建议是研究使用 GraphViz ( http://www.graphviz.org/ ),它将计算有效的布局,最大限度地减少重叠并经常完全消除它们。有关可以实现的相同示例,请查看http://ravenspoint.com/maps.html

于 2013-03-10T18:59:01.303 回答
1

作为窗口的组件(wx.Panel、wx.StaticLine 等)有一个.getRect返回 wx.Rect 的方法。

wx.Rect有一个方法,.Intersects(self, otherRect)如果 2 个元素重叠则返回 true。

还有一个wx.Rect2D具有一些附加功能 - 插值、获取交集和并集等。

于 2013-03-11T10:59:45.493 回答