窗口定位算法

时间:2011-02-05 03:18:32

标签: algorithm window position placement

我需要一种算法,可以在屏幕上已有的其他小工具窗口之间的第一个可用空间中找到小工具窗口。基本上,屏幕将包含不同大小的小工具窗口,所有这些窗口都位于不同的位置当向屏幕添加另一个固定大小的小工具时,我需要一种可以放置小工具的方法,即在小工具之间的空白区域。如果算法无法找到enought space,那么小工具将被放置在现有小工具的底部。

我已经考虑创建一个2维数组,代表包含所有小工具和它们占用的空间的屏幕,但我认为可能有更好的方法来做到这一点。

要求如下

  1. 从左向右移动/从上到下找到第一个可用的空白空间,该空白空间将完全适合小工具窗口,周围小工具具有固定边距。
  2. 如果找不到空白区域,请将小工具放在所有其他小工具的左下角。
  3. 谢谢。

1 个答案:

答案 0 :(得分:2)

假设您找到了新小工具的位置。

  1. 将其向左移动,直至其到达屏幕边缘或其他小工具的右边缘。
  2. 将其移至顶部,直至其到达屏幕边缘或其他小工具的下边缘。
  3. 这意味着,您可以尝试集合x{0, g1.right, g2.right, .., gn.right}的所有组合以及集合y{0, g1.bottom, g2.bottom, .., gn.bottom}的所有组合。

    非常简单并且提供O(n^3)复杂性。 (n^2来自上方,另一个n来验证该位置是否可用)