将窗口适应桌面的算法(如平铺)

9

我正在寻找一种搜索算法来解决这样的问题:

我有几个窗口,每个窗口都可以移动和重新调整大小,但宽高比是指定的,例如2:1(高度:宽度)。

每个窗口不能在其他窗口上方,并且所有窗口必须完全可见。空闲区域(桌面壁纸可见性)必须最小化。

有人能告诉我需要什么算法来解决这种类型的问题吗?

问候,


相关的链接:http://stackoverflow.com/questions/1810550/position-boxes-like-in-expose https://dev59.com/IlLTa4cB1Zd3GeqPcKTS https://dev59.com/ukrSa4cB1Zd3GeqPZMeS - Josh Lee
3个回答

3

另一种可能比分屏更简单的方法是将屏幕大小细分为所需数量的窗格,然后在窗格内适配满足其他要求的窗口。由于您可能同时只打开少量窗口,并且屏幕不会动态改变其大小,因此您可以预先计算出1到O(100)个打开窗口所需的所有排列。


2
如果您可以放宽所有窗口都具有给定“长宽比”的要求,那么问题就变得非常简单。假设您有N个“瓷砖”需要在单个屏幕上排列,那么这些可以按列排列,其中列数NumCols是N的平方根,当N不是完全平方数时向上取整。所有瓷砖的列宽相等。然后,每列中的瓷砖数量为N / NumCols,必要时四舍五入以使总列数为N。这就是Microsoft Excel在“查看”>“排列全部”>“平铺”下所做的。Excel选择将瓷砖较少的列放在屏幕左侧。

1

一种方法是将其视为2D装箱问题,就像1D装箱问题一样。例如,这里发布了一个示例算法here,其中包含一些很好的参考资料。


窗口调整大小功能怎么样? - Svisstack
是的,你所需要做的就是重新布局 -- 你所追求的是布局算法,而不是其周围的基础设施,对吧? - Tim Barrass

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接