最初に、ラスタライズでは技術的には真の解像度の独立性などは存在しないことに注意してください。十分に高い倍率では、個々のテクセルが見え始めます。これに対する唯一の解決策は、ベクターグラフィックスシステムを作成することです。
そうは言っても、堅牢なラスターベースの解像度に依存しないシステムを作成するには、サイズ変更、座標系、およびレイアウトのいくつかの手順があります。
サイジングと配置のために、実際のアプリケーション解像度との比率を維持するユニットのセットを使用する必要があります。この場合、私はアメリカ人であり、DPI(インチあたりのドット数)で要素をスケーリングできるため、インチを使用できます。たとえば、アプリケーションが800x600で実行されているとします。デフォルトのWindows DPIは96であるため、アプリケーションの解像度は(800/96)x(600/96)インチまたは8.33x6.25インチです。
少なくとも、4:3と16:9の両方のアスペクト比で作業できるようにする必要があるため、画面座標系の処理方法は少しトリッキーになります。私が行うことをお勧めするのは、表示領域(およびウィンドウとコントロール)の中央に(0,0)を置くことです。コーナーに(0,0)を置くと、そのコーナーが解像度とアスペクト比に基づいて動き回るので、すべてのスプライトが移動しますが、画面の中心は常に画面の中心になるため、これはうまくいきます。デバイスの問題。800x600の例を続けると、座標系は(左から右に)-4.165inから4.165inに、(上から下に)3.125inから-3.125inになります。
したがって、現時点では、画面の中心に対して常に同じ場所にある項目を持つDPIに依存しないUIシステムがあり、解像度に完全に依存しているわけではありません。さいわい、DPIの独立性によって実現できることは、何らかのヒューリスティックに基づいてDPIをスケーリングすることでUIをスケーリングすることです。たとえば、ヒューリスティックとして垂直解像度を使用してDPIをスケーリングできます。800x600が96 DPIの場合、1024x768には123 DPI、1280x720には115 DPIを使用します。
最後に、絶対配置と相対配置の両方を処理するレイアウトシステムを構築する必要があります。この優れた例は、WPFとWebです。他の多くの便利な自動レイアウトオプションとともに、コントロール/ボックスが親要素の一部を塗りつぶすように指定することができます。これらすべてを組み合わせると、多くの異なる解像度とアスペクト比でほぼ同じに見えるUIシステムが得られます。
要約すると、WPFは、左上隅の座標系で原点を維持し、垂直解像度に基づいてDPIを自動的にスケーリングしないことを除いて、これのほとんどすべてを行うため、WPFを検討することを強くお勧めします。