デスクトップにWindowsを適合させるアルゴリズム(タイルなど)

StackOverflow https://stackoverflow.com/questions/4456827

  •  10-10-2019
  •  | 
  •  

質問

私はこのような問題を解決するためにアルゴリズムを検索します:

ウィンドウはほとんどありません。各ウィンドウを移動して再サイズできますが、幅と高さの間には指定された比率があります。 2:1(高さ:幅)。

各ウィンドウは他のウィンドウに存在することはできず、すべてのウィンドウを完全に表示する必要があります。フリーエリア(デスクトップの壁紙の可視性)は最小限でなければなりません。

このタイプの問題に必要なアルゴリズムを教えてもらえますか?

ご挨拶、

役に立ちましたか?

解決

パッキングよりも簡単に実装する可能性のある別のアプローチは、画面サイズを必要なペインに分割し、ペイン内の他の要件を満たすウィンドウを適合させることです。おそらくいつでも少数のウィンドウが開いているので、画面が動的にサイズが変更されないため、おそらく1つのO(100)の開いたウィンドウに必要なすべての配置を事前に計算できます。

他のヒント

1つのアプローチは、それをaとして扱うことです 2Dパッキングの問題, 、1Dビンパッキングの問題のように。サンプルアルゴリズムが投稿されています ここ, 、たとえば、いくつかの良い参照があります。

すべてのウィンドウに与えられた「アスペクト比」があるという要件をリラックスできる場合、問題は非常に簡単になります。あなたが持っていると仮定します N 「タイル」は単一の画面にアレンジするために、これらは列の数がある列に配置できます。 NumCols の平方根です N 丸みを帯びたとき N 完璧な正方形ではありません。タイルのすべての列は等しい幅です。各列のタイルの数はそうです N/NumCols 必要に応じて、必要に応じて丸みを帯びて、列の総数を作成するために N. 。これは、Microsoft ExcelがView> Arrange All> Tiledの下で行うことです。 Excelは、画面の左側に1つのタイルが少ない列を置くことを選択します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top