Windows 7から機能として入った、ディスプレイの高DPIという機能があります。
Windows 7やWindows 10で、
「高いDPI設定では画面のスケーリングを無効にする」の意味は何でしょうか?
「高いDPI設定では画面のスケーリングを無効にする」の選択ができないことはあるんでしょうか?
高DPI(Dot Per Inch)設定とは
Windows 7では、
[コントロールパネル]⇒[デスクトップのカスタマイズ]⇒[ディスプレイ]で以下の設定画面が表示されます。
画面上の文字を読みやすくします
こららのいずれかのオプションを選択することで、画面上のテキストやその他の項目のサイズを変更できま
す。一時的に画面上の一部のみを拡大するには、拡大鏡ツールを使用します。
小 - 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%で表示した例です。
わかりますか?
この通り、タイトルバーやメニューバーの文字がぼやけてしまいます。
もともと、96DPIで前提で作成されたアプリケーションを無理やり150%(144DPI)で表示しているのでぼけてしまうのは当然です。
このような場合、以下のように対応します。
エクスプロラーで実行ファイルのプロパティを表示します。
「互換性」タブの設定
「高DPI設定では画面のスケーリングを無効にする」
にチェックを入れます。
このようにして実行してみます。
スケーリングされないために、タイトルバーやメニューバーの文字がぼやけずに綺麗に表示されます。
高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 |
コメント