Windowsで高(High)DPI(Dot Per Inch)設定で画面のスケーリングを無効にする

高DPI

Windows 7から機能として入ったディスプレイの高DPIという機能について機能をまとめました。

スポンサーリンク
スポンサーリンク

高DPI(Dot Per Inch)設定とは

Windows 7では、

[コントロールパネル]⇒[デスクトップのカスタマイズ]⇒[ディスプレイ]

で以下の設定画面が表示されます。

WS000021

画面上の文字を読みやすくします
こららのいずれかのオプションを選択することで、画面上のテキストやその他の項目のサイズを変更できま
す。一時的に画面上の一部のみを拡大するには、拡大鏡ツールを使用します。
小 - 100% (既定)(S)

中(M) - 125%

大(L) - 150%

この設定は次の意味を持ちます。

従来の解像度の場合、96DPIが標準でした。

そのため、96DPIを前提として作成されているアプリが数多く存在します。

というより、何も考えずにアプリケーションを作成すると96DPI前提のアプリケーションになります。

96DPIとは、1インチの中に96ドットが含まれるという意味です。

DPIとはDot Per Inchの略です。

高解像度ディスプレイで96DPIを想定して作成されたアプリを表示した場合、テキストなどのUI要素は小さく表示されてしまいます。

小さいディスプレイに高解像度では見にくい場合があります。

そのため、このコントロールパネルのディスプレイ設定で125%や150%に拡大するという処理をOS側で行っています。

ディスプレイの解像度を150%に変更すると、UI要素が1.5倍に拡大されて、文字が読みやすくなります。

例えば、Surface Pro 3 など12型ワイド(3:2)の小さいディスプレイに、解像度が2160×1440ピクセル表示の場合、

デフォルトでディスプレイが150%

となっていたりします。

ディスプレイ150%で表示したらぼやける

ところで高DPIに対応していないアプリケーションを125%や150%で表示した場合、少し問題が生じる場合があります。

次の画像は、Windows Formで作られたアプリケーションを150%で表示した例です。

image

この通り、タイトルバーやメニューバーの文字がぼやけてしまいます。

もともと、96DPIで前提で作成されたアプリケーションを無理やり150%(144DPI)で表示しているのでぼけてしまうのは当然です。

このような場合、以下のように対応します。

エクスプロラーで実行ファイルのプロパティを表示します。

image

「互換性」タブの設定

「高DPI設定では画面のスケーリングを無効にする」

にチェックを入れます。

このようにして実行してみます。

image

スケーリングされないために、タイトルバーやメニューバーの文字がぼやけずに綺麗に表示されます。

高DPI対応のアプリケーション作成

Windows 10や高解像度ディスプレイの登場に伴い、今後、数年で高DPI対応のアプリケーション作成は必須になってくると思われます。

アプリケーション的には高DPI対応は以下の3つのレベルに分類されます。

Not DPI Aware : 高DPIに対応していないアプリケーション
System DPI Aware : 高DPIに対応しているアプリケーション。ただし、モニターごとのDPIには対応していません。
Per monitor DPI Aware : Windows 8.1でサポートされたモニターごとのDPIの設定にも対応しています。

もっとも簡単に、高DPI対応のアプリケーションを作成するには、Windows FormではなくてWPFを使うようにすることです。

WPFは、デバイス非依存ピクセル(DIP)という単位で表現されており、このDIPはデバイスのDPI設定に関わらず「1 DIP = 1/96 インチ」と定義されています。

そのため、WPFではDPIを意識せずにUIを実装することができ、高DPI環境ではDPI設定と一致するように自動的にスケールされて表示されます。

というわけで、これからUIアプリケーションを作る場合、WPFを使うようにします。

[関連製品]

ブランド マイクロソフト
商品重量 1.5 Kg
梱包サイズ 38.4 x 23.4 x 4 cm
メーカー型番 MQ2-00017
画面サイズ 12 インチ
CPUブランド インテル
CPUタイプ Intel Core i5
RAM容量 4 GB
HDD容量 128 GB
OS Windows 8.1 Pro