2007-04-29

フルスクリーン(全画面化)時のディスプレイモード選択アルゴリズム

従来は単純に解像度の面積が最小になるものを選んでいたのだけど、それでは困るケースが頻発しているようなので、少し改善してみた。

具体的には、モニターにアスペクト比固定拡大機能が備わっているという前提で、表示面積が最大になるものを選ぶようにした。つまり、必要とする解像度、ディスプレイモードの解像度、モニター標準的な解像度の三つを元に判断する。

問題はモニターの標準的な解像度……というか縦横比を得る方法なのだけど、これはEnumDisplaySettingsのENUM_REGISTRY_SETTINGSを使うことにした。必ずしも正しくはないけれど、これ以上のものが見つからなかったので。

アスペクト比固定拡大機能が備わっていないモニターで縦横比がおかしくなるのは従来通りだけど、従来ほどおかしなものは選ばないはず。アスペクト比固定機能のないモニターを使っている人は伸縮設定と共に解像度も適切に設定してほしい。