レイアウト メトリック

レイアウト

デバイスに依存しないレイアウト

フォントの書体やサイズ、解像度 (dpi)、ディスプレイ、グラフィック アダプターに関係なく、意図したとおりに表示されるレイアウトは、デバイスに依存しないレイアウトです。問題を理解するために、まずはダイアログ ボックスのレイアウトが物理的なピクセルに基づいている場合の動作を検討してみます。9 ポイントの Segoe UI を使用した次のダイアログ ボックスのレイアウトは、96 dpi では設計者が意図したとおりに表示されます。

読みやすい通常サイズのダイアログ ボックスのスクリーン ショット

9 ポイントの Segoe UI を使用した物理ピクセルベースのレイアウトのダイアログ ボックスを 96 dpi で表示した場合

しかし、120 dpi で表示するとこのダイアログ ボックスは小さくなり、拡大しなければテキストが読みづらくなります。

読みにくい小さいダイアログ ボックスのスクリーン ショット

9 ポイントの Segoe UI を使用した物理ピクセル ベースのレイアウトの同じダイアログ ボックスを、120 dpi で表示した場合

600 dpi のプリンターで印刷すると、拡大しなければまったく読み取れなくなります。

読み取り不可能な非常に小さいダイアログ ボックスのスクリーン ショット

9 ポイントの Segoe UI を使用した物理ピクセル ベースのレイアウトの同じダイアログ ボックスを、600 dpi で表示した場合

また、メイリオで表示すると、次のようにテキストがコントロール内に収まらなくなります。

日本語書体を使用したダイアログ ボックスのスクリーン ショット

ピクセル ベースのレイアウトの同じダイアログ ボックスを、9 ポイントのメイリオを使用して表示した場合

これらの例からわかることは、デバイスに依存しないレイアウトにするには、テキストの読みやすさが他の表示パラメーターに影響されないようにする必要があるということです。そのため、ダイアログ ボックスのレイアウトとサイズは、テキストとの比例関係を維持する必要があります。Microsoft® Windows® では従来から、ダイアログ ユニットを使用することによってこうした目標を達成しています。

ダイアログ ユニット

ダイアログ ユニット (DLU) は、デバイス非依存のメトリックです。DLU では、水平方向の 1 ダイアログ ユニットが、使用中のフォントの平均文字幅の 4 分の 1 に相当します。また、垂直方向の 1 ダイアログ ユニットは、使用中のフォントの文字の高さの 8 分の 1 に相当します。文字の高さは幅の約 2 倍なので、水平方向の DLU は垂直方向の DLU とほぼ同じ大きさですが、DLU は正方形のユニットではないことを理解しておくことが重要です。

グリッドで示された文字 "h" の図

ダイアログ ユニットは、現在のフォントの平均文字幅の 4 分の 1、文字の高さの 8 分の 1 に相当します。

DLU は、Win32 リソース ファイルでのサイズ変更と配置に使用されます。リソース ファイル内で、各ダイアログ ボックス テンプレートのフォントが定義されており、DLU を決定する際に使用されます。したがって、複数のフォントを単一のプログラムで使用しても問題ありません。

相対ピクセル

前に示したように、物理ピクセルはデバイスに依存するメトリックですが、わかりやすく使いやすいというメリットがあります。デバイスに依存しないようにするため、新しい UI テクノロジでは相対ピクセルが使用されています。

相対ピクセルはデバイスに依存しないメトリックであり、96 dpi では物理ピクセルでの表示と同じですが、他の dpi では比率を保って拡大縮小が行われます。そのため、たとえば、120 dpi での 1 相対ピクセルは、1.25 物理ピクセルに相当します。相対ピクセルは正方形のユニットです。

相対ピクセルは、Windows Presentation Foundation (WPF) と WinForms で、ダイアログ ボックスのサイズ変更とレイアウトに使用されています。

有効解像度

ほとんどの Windows ベースのコンピューターでは、従来より既定で 96 dpi となっていましたが、現在多くのラップトップでは、既定で 120 dpi 以上となっています。高 dpi が使用されることで、大きめのフォント、アイコン、グラフィックなど、より多くの物理ピクセルで描画した再現性の高い UI 要素が Windows で使用されるようになっています。結果として、UI の表示により多くのピクセルが必要となるため、画面の有効解像度は低くなります。

他の dpi を説明するために、画面解像度は、"有効解像度" という言葉で示されています。有効解像度は 96 dpi での解像度で、他の dpi に拡大縮小されます。次の表は、Windows の最小有効解像度 800 × 600 ピクセルおよび Windows の推奨有効解像度 1024 × 768 ピクセルでの一般的な dpi 設定の物理解像度を示しています。

dpi最小物理解像度 (ピクセル)推奨される最小物理解像度 (ピクセル)
96 dpi (100%)800 × 6001024 × 768
120 dpi (125%)1024 × 7681280 × 960
144 dpi (150%)1200 × 9001600 × 1200
192 dpi (200%)1600 × 12002500 × 1600

これにより、Windows の最小有効解像度が 800 × 600 ピクセルの場合、Windows を 120 dpi でサポートするための最小物理解像度は、1024 × 768 ピクセルということになります。通常、有効解像度は次の式で計算できます。

有効解像度 = 物理解像度 × (96/現在の dpi 設定)

画面のサイズを示す場合は有効解像度を使用し、レイアウトのサイズと間隔を示す場合は相対ピクセルを使用します。たとえば、Windows の最小有効解像度で画面に適した最大のウィンドウ サイズは、800 × 600 相対ピクセルです。これは、dpi の値に関わらず適用されます。

96 および 120 dpi の解像度で表示されるウィンドウの図

画面のサイズを示す場合は有効解像度を使用し、ウィンドウやコントロールを示す場合は相対ピクセルを使用します。

開発者向け情報: 詳細については、「Writing High-DPI Win32 Applications (高 dpi Win32 アプリケーションの記述)」を参照してください。

DLU から相対ピクセル (またはその逆) への変換

レイアウトとサイズを、DLU から相対ピクセル、またはその逆へ変換することが必要になる場合があります。しかし、DLU は正方形のユニットではないので、変換は軸に依存します。さらに、DLU は使用するフォントに基づいて決定されるので、変換はフォントにも依存します。

9 ポイント Segoe UI の場合の変換
水平方向の 1 DLU = 1.75 相対ピクセル
垂直方向の 1 DLU = 1.875 相対ピクセル
ダイアログ ユニット水平方向のピクセル垂直方向のピクセル
12 (1.75)2 (1.875)
24 (3.5)4 (3.75)
35 (5.25)6 (5.625)
477 (7.5)
59 (8.75)9 (9.375)
610 (10.5)11 (11.25)
712 (12.25)13 (13.125)
81415
916 (15.75)17 (16.875)
1017 (17.5)19 (18.75)
1119 (19.25)21 (20.625)
122122 (22.5)
1323 (22.75)24 (24.375)
1424 (24.5)26 (26.25)
1526 (26.25)28 (28.125)
162830
1730 (29.75)32 (31.875)
1831 (31.5)34 (33.75)
1933 (33.25)36 (35.625)
203537 (37.5)
 
8 ポイント Tahoma の場合の変換
水平方向の 1 DLU = 1.50 相対ピクセル
垂直方向の 1 DLU = 1.625 相対ピクセル
ダイアログ ユニット水平方向のピクセル垂直方向のピクセル
11 (1.5)2 (1.625)
233 (3.25)
34 (4.5)5 (4.875)
466 (6.5)
57 (7.5)8 (8.125)
6910 (9.75)
710 (10.5)11 (11.375)
81213
913 (13.5)15 (14.625)
101516 (16.25)
1116 (16.5)18 (17.875)
121819 (19.5)
1319 (19.5)21 (21.125)
142123 (22.75)
1522 (22.5)24 (24.375)
162426
1725 (25.5)28 (27.625)
182729 (29.25)
1928 (28.5)30 (30.875)
203032 (32.5)

かっこ内の数字は正確な変換のための数値です。他のコンテキストとは異なり、.5 は 1 に切り上げず、0 に切り捨てられていることに注意してください。

コントロールとテキストの測定

グラフィック プログラムを使用してコントロールのサイズや間隔を測定するときに、数字が予測とは異なり混乱することがあります。たとえば、コマンド ボタンの標準サイズは 75 × 23 ピクセルですが、測定すると 73 × 21 ピクセルになります。この不一致は、一部のコントロールに、1 ピクセル幅の非表示の枠線があるためです。この枠線があることで、DLU を使用してレイアウトしたときに、コントロールどうしを密着させて配置することができます。コントロールのサイズと間隔を測定する場合は、非表示の枠線に注意します。

コントロールの周りにある非表示の枠線を示す図

一部のコントロールには非表示の枠線があります。

グラフィック プログラムでテキストのサイズと間隔を測定する場合にも、同様の問題が発生します。テキスト コントロールの高さは、アセンダー、ディセンダー、分音記号、およびその間隔 (レディングと呼ばれます) を含むテキストの高さで構成されます。そのため、表示されるテキストのサイズと間隔が、実際のサイズと間隔とは異なる場合があります。

文字の体裁用語を示す図

フォントのアセンダー、ディセンダー、分音記号、レディング

ラベルとコントロールとの間隔を示すスクリーン ショット

警告: テキストは表示よりも大きなサイズに設定されています。

表示: