C# アプリケーションで Windows ディスプレイのスケーリングを正確に取得する
テキストや要素のサイズ変更など、ユーザー定義の表示設定に合わせてアプリケーションの動作を調整することは、頻繁に行われるプログラミング作業です。 この記事では、これらの設定を正確に取得するための堅牢な C# メソッドを紹介します。
Graphics.DpiX
または DeviceCap.LOGPIXELSX
は従来のアプローチですが、特に高 DPI ディスプレイでは、不正確なスケーリング値が生成される可能性があります。
より信頼性の高い方法には、Windows API 関数 GetDeviceCaps
を利用してスケーリング係数を計算することが含まれます。この関数は、論理的な画面の高さと物理的な画面の高さの両方を取得し、正確な計算を可能にします。
改善された C# コードは次のとおりです:
<code class="language-csharp">[DllImport("gdi32.dll")] static extern int GetDeviceCaps(IntPtr hdc, int nIndex); public enum DeviceCap { VERTRES = 10, DESKTOPVERTRES = 117, } private float GetScalingFactor() { using (Graphics g = Graphics.FromHwnd(IntPtr.Zero)) { IntPtr desktop = g.GetHdc(); int logicalScreenHeight = GetDeviceCaps(desktop, (int)DeviceCap.VERTRES); int physicalScreenHeight = GetDeviceCaps(desktop, (int)DeviceCap.DESKTOPVERTRES); g.ReleaseHdc(desktop); return (float)physicalScreenHeight / logicalScreenHeight; // e.g., 1.25 = 125% } }</code>
この洗練されたアプローチにより、さまざまなディスプレイ スケーリング レベルにわたってスケーリング係数を決定する精度が向上し、ユーザーのディスプレイ構成に基づいてアプリケーションの機能をより正確に調整できるようになります。
以上がC# で Windows ディスプレイのスケーリング係数を正確に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。