1.概要
ディスプレイのサイズ(32型など)や解像度(FHD:1920×1080など)によって
文字やアイコンなどがwindowsが推奨する大きさに自動的に設定されるようになりました。
この自動的というタイミングですが、特定の型式のディスプレイをを初めて接続した時になります。
※過去に接続したことのあるディスプレイについては、情報がレジストリに記憶されています。
これはアプリケーションを作成において邪魔になる場合があります。
今回の目的は初めて接続したディスプレイでもwindowsが推奨する大きさを無視し
100%の状態で表示するようにしたい...というところになります。
2.テキスト、アプリ、その他の項目のサイズを変更するとは?
デスクトップを右クリックし【ディスプレイ設定】を開くと
下図のウィンドウが開きます。
【拡大縮小とレイアウト】に
【テキスト、アプリ、その他の項目のサイズを変更する】があります。
ここの値が125%だったり150%だったり接続するディスプレイによって
windowsが推奨する大きさに自動的に設定されます。
レジストリでいうと
【HKEY_CURRENT_USER\Control Panel\Desktop\PerMonitorSettings\接続されているディスプレイ\DpiValue】
になります。
私が使っているディスプレイは27型の4Kディスプレイなのですが
値は下表のとおりになりました。
倍率 | 設定値 |
---|---|
100% | 0xFFFFFFFE |
125% | 0xFFFFFFFF |
150%(推奨) | 0x00000000 |
175% | 0x00000001 |
200% | 0x00000002 |
どうやら推奨値の0を基準として
拡大毎に【+1】、縮小毎に【-1】といった感じのようです。
3.100%固定にするためには?
では早速設定をしていきます。
設定は全てレジストリで行います。
設定する項目は【HKEY_CURRENT_USER\Control Panel\Desktop】にあります。
①【Win8DpiScaling】
デフォルトの0から1に変更します。
これはwindows8でいう【すべてのディスプレイで同じ拡大率を使用する】に当たります。
windows10ではUIから削除され、レジストリにのみ残っている状態になっています。
②【LogPixels】
デフォルトでは存在しないのでREG_DWORDで作成します。
値は96に設定します。
対応については下表のとおりです。
設定値 | 倍率 |
---|---|
96 | 100% |
120 | 125% |
144 | 150% |
192 | 200% |
これは直接倍率に関わってくるところになります。
ですが①を【1】に設定しないとこの設定がが有効にならないようです。
私は150%の状態で【96】にし再起動をしてみましたが
変化はなく、合わせて①を【1】に設定し再起動すると
100%の状態で起動しました。
4.ディスプレイの接続がない時の解像度は?
ディスプレイの電源を落としたり、映像ケーブル(HDMIやDP)を抜いた時など
デスクトップのレイアウトが崩れてしまうことがあります。
これは何故かというと、ディスプレイからのEDIDが取得できず
デフォルトの解像度が選択されてしまうからです。
このデフォルトの解像度というのが厄介で
グラフィックボードによって異なるようです。
私の場合ですが【Intel HD Graphics】なのですが
この場合下記のレジストリが該当します。
【HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration\SIMULATED_*****】
※【SIMULATED】の部分が【NOEDID】の場合もあります。
ここにある値を下図のとおり変更することでEDIDをロスしても
ディスプレイ解像度を設定値に保つことが出来ます。
【PrimSurfSize.cx】:width
【PrimSurfSize.cy】:height
【ActiveSize.cx】:width
【ActiveSize.cy】:height
【Rotation】:1に設定すると横画面、2に設定すると縦画面になります。
【【【 問題発生 】】】
これを4Kの解像度(3840×2160)に設定しても
4Kのレイアウトは維持されないようです。
これは理由はわかりませんが【NVIDIA】では問題なく動作しました。
どうやらグラフィックボードによって設定可能な範囲が異なるようです。