【问题标题】:window positioning algorithm窗口定位算法
【发布时间】:2011-02-05 03:18:31
【问题描述】:

我需要一种算法,它可以在屏幕上其他小工具窗口之间的第一个可用空间中找到小工具窗口。基本上,一个屏幕将包含不同大小的小工具窗口,它们都位于不同的位置。在屏幕上添加另一个固定大小的小工具时,我需要一种方法来锻炼可以放置小工具的位置,即小工具之间的空白空间。如果算法无法找到足够的空间,那么小工具将被放置在现有小工具的底部。

我曾考虑创建一个二维数组,表示包含所有小工具的屏幕及其占用的空间,但我认为可能有更有效的方法。

要求如下

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

谢谢。

【问题讨论】:

    标签: algorithm window position placement


    【解决方案1】:

    假设您已经为新小工具找到了位置。

    1. 将其向左移动,直到碰到屏幕边缘或其他小工具的右边缘。
    2. 将它移到顶部,直到它碰到屏幕边缘或另一个小工具的底部边缘。

    这意味着,您可以尝试一组 {0, g1.right, g2.right, .., gn.right} 中的所有 x 组合以及一组 {0, g1.bottom, g2.bottom, .., gn.bottom} 中的所有 y 组合。

    非常简单,并赋予O(n^3) 复杂性。 (上面的n^2 和另一个n 以验证该职位是否可用)

    【讨论】:

    • 感谢您的回答,这不是我想要的,也许是因为我没有足够清楚地解释问题,所以我更新了问题。
    猜你喜欢
    • 1970-01-01
    • 2012-06-27
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-01
    • 2011-09-04
    相关资源
    最近更新 更多