1

既に画面上にある他のガジェット ウィンドウ間の最初の利用可能なスペースにガジェット ウィンドウを配置するアルゴリズムが必要です。基本的に、画面にはさまざまなサイズのガジェット ウィンドウがすべてさまざまな位置に表示されます。固定サイズの別のガジェットを画面に追加するとき、ガジェットを配置できる場所、つまりガジェット間の空きスペースにワークアウトする方法が必要です。アルゴリズムが十分なスペースを見つけられなかった場合、ガジェットは既存のガジェットの一番下に配置されます。

すべてのガジェットとそれらが占めるスペースを含む画面を表す 2 次元配列を作成することを考えましたが、おそらくもっと効率的な方法があると思います。

要件は次のとおりです。

  1. 左から右/上から下に移動して、ガジェット ウィンドウに完全に収まり、周囲のガジェットから一定のマージンを確保できる最初の使用可能な空きスペースを見つけます。
  2. 空きスペースが見つからない場合は、ガジェットを他のすべてのガジェットの左下に配置します。

ありがとうございました。

4

1 に答える 1

2

新しいガジェットの場所を見つけたとしましょう。

  1. 画面の端または別のガジェットの右端に当たるまで、左に移動します。
  2. 画面の端または別のガジェットの下端に当たるまで、上に移動します。

つまり、 from a set のすべての組み合わせとxfrom a set{0, g1.right, g2.right, .., gn.right}yすべての組み合わせを試すことができます{0, g1.bottom, g2.bottom, .., gn.bottom}

非常に単純で、O(n^3)複雑さを与えます。(位置が利用可能であることを確認するためにn^2、上と別の場所から)n

于 2011-02-05T03:28:24.300 に答える