Windows 設定「アプリのスケーリングを修正」は何をしますか?

Windows 設定「アプリのスケーリングを修正」は何をしますか?

Windows 10 の設定 (バージョン 1809 以降) には、「アプリのスケーリングを修正する」設定 ([設定] -> [ディスプレイ] -> [詳細なスケーリング設定]) があり、次のようなトグル スイッチがあります。

Windows がアプリをぼやけないように修正する

これにより、Windows と Windows アプリが高 DPI ディスプレイを処理する方法が変わることは理解していますが、具体的には何が行われるのでしょうか?

このスイッチを切り替えることで、動作不良のアプリを修正できましたが、この設定が具体的に何をするのかを理解して、それが引き起こす可能性のある問題を認識できるようにしたいと思います。

答え1

要約:設定コントロールGDI スケーリングプログラムの表示を拡大縮小するための特定の手法。

Windows の機能を理解するには、オペレーティング システムがグラフィカル表示をどのように処理するかを理解する必要があります。

グラフィカル プログラムは、図形、テキスト、画像などのグラフィックスを仮想サーフェス上に描画します。表示するときには、OS がこの仮想サーフェスをターゲット デバイス (ディスプレイやプリンターなど) に変換します。この方法では、この部分は OS とそのドライバーによって処理されるため、プログラムは表示メディアを認識して適応する必要がありません。

新しい高解像度および高 DPI モニターでは、一部のプログラムの表示がユーザーにとって小さすぎるため、スケーリングが必要になるという問題が発生しています。Microsoft は、このために DPI 対応グラフィックスの API を作成し、プログラムによる表示が自動的に調整されるようにしていますが、実際にこのインターフェイスを使用するプログラムはごくわずかです。

DPI 対応でないプログラム (ほとんどのプログラムがこれに該当) 向けに、Microsoft はディスプレイを拡大する自動メカニズムを作成しました。この種の最初のメカニズム (Windows Vista にすでに存在) は、画像サイズ変更アルゴリズムに基づいていました。つまり、Windows はプログラムによって描画された画面を取得して拡大し、実質的に 1 つの描画ピクセルを複数のピクセルに変換します。結果は画像を拡大するのと同じで、画像は大きくなりますが、品質が低下し、ぼやけて表示されます。

マイクロソフトの2番目で最新の問題解決の試み(Windows 10 V1703で導入)は、プログラムが仮想サーフェスに描画している間にグラフィック操作(GDI)をインターセプトすることです。マイクロソフトはこれを次のように呼んでいます。GDI スケーリング- 見るWindows での高 DPI デスクトップ アプリケーション開発たとえば、プログラムは 12 ポイントのフォントを使用してテキストを書き込む場合があります。ただし、ターゲットが 150% に拡大された画面である場合、Windows は代わりに 18 ポイントに設定されたフォントを使用し、完全に読みやすい結果を生成します。他の描画呼び出しも同様にインターセプトされます。

この方法は侵襲的であり、場合によっては失敗したりプログラムに干渉したりする可能性がある(例:高DPIデバイスにおけるWindowsのスケーリングの問題) であるため、Windows ではこれを使用するにはユーザーの許可が必要です。許可はシステム全体 (ご質問の「アプリのスケーリングを修正する」設定) に与えることも、実行可能ファイルのプロパティ (タブ「互換性」/「高 DPI 設定の変更」) を介してプログラムごとに与えることもできます。

答え2

Windows 10では、描画するソフトウェアやアプリを「ズーム」することができます。ジーディーアイ(オペレーティング システムのすべての部分を含む)、すべてのベクトル要素を目的のパーセンテージにスケーリングします。

たとえば、150% のスケーリングを設定すると、600x400 ピクセルのウィンドウが 900x600 ピクセルにサイズ変更されます。スケーリングされたウィンドウ内の 32x32 ピクセルのアイコンは 48x48 ピクセルにサイズ変更されます。上から 8 ピクセル、左から 16 ピクセルのボタンは上から 12 ピクセル、左から 24 ピクセルに移動され、12 ポイントのフォントは 18 ポイントとして描画されます。200% のスケーリングを設定すると、元のパラメータが 2 倍になります。

これにより、すべての要素の相対的なサイズと位置が維持され、項目が読みやすくなり、クリックやタッチがしやすくなります。そのため、スケーリング設定をカスタマイズすると、次のようないくつかの点で役立ちます。1) 高 DPI 画面でシステムとアプリケーションを読みやすくする 2) 視力の弱い人のために項目のサイズを調整できるようにする 3) タッチはマウスでのクリックよりも精度が低く、クリック可能な項目間に広いスペースが必要なため、システムをよりタッチフレンドリーにする

このスケーリング メカニズム (「GDI スケーリング」と呼ばれる) は、実際にソフトウェア/アプリの GDI 出力を画面に再描画するもので、Vista で導入されました。高 DPI とタッチ スクリーンがますます一般的になるにつれて、この 10 年間で人気が高まっています。これは、グラフィック出力がビットマップ イメージとして扱われ、それに応じてスケーリングされていた XP にまで遡る古いスケーリング方法を補完するものであり、スケーリングされたアプリケーションはぼやけて見え、ネイティブの DPI 対応レンダリングとは明らかに区別がつかなくなっていました。そのため、新しいメカニズムは「Windows がアプリをぼやけないように修正する」という用語で呼ばれています。

残念ながら、GDI スケーリングはビットマップ グラフィックには役立たないため、これらは依然としてビットマップとしてスケーリングされます。前の例では、32x32 ピクセルのアイコンは 48x48 ピクセルになりますが、いずれにしても、拡大された、解像度の低い 32x32 ピクセルのビットマップで埋められます。

さらに悪いことに、開発者が当初前提としていたものが、システムが GDI をオンザフライで変更して画面上の出力を拡大縮小することで破綻した場合、一部のソフトウェアはさまざまな予期しない方法で誤動作する可能性があります。そのため、スケーリング設定を変更する際は、経験則として、古いソフトウェアを慎重にテストする必要があります。したがって、GDI スケーリングは、「アプリのスケーリングを修正」設定で制御できます。

答え3

最近、この問題に遭遇しました。上記の解決策に加えて、これは、ラップトップでスケーリングが有効になっていて、セカンダリ モニターでアプリケーションを「スケーリングせずに」実行したいというシナリオの修正に役立ちます。

この例では、ラップトップは高解像度の画面で、サイズは 13 インチしかないため、小さいフォントを読むにはスケーリングが必要ですが、USB-C 接続で複数のモニターが接続されており、これらは 24 インチ標準 HD なので、スケーリング係数を適用する必要はありません。スケーリング機能を使用し、アプリケーションごとの互換性 -> 高 DPI 設定の変更機能を設定することで、通常大きなモニターで実行するアプリケーションからスケーリングを削除し、ラップトップで使用するアプリケーションは機能させることができます。完璧な修正ではありませんが、私のシナリオでは役立ちます。

関連情報