C# で Windows ディスプレイ設定にアクセスする
Windows 7 以降のバージョンには、ユーザーがテキストと UI 要素のサイズを調整できるコントロール パネル設定が用意されています。 C# 開発者は、多くの場合、アプリケーションの動的な動作のためにこの設定を取得する必要があります。
実用的な解決策
graphics.DpiX
と DeviceCap.LOGPIXELSX
を直接使用すると、実際のスケーリングに関係なく、予期せず固定値 (96 DPI) が返されます。 スケーリング係数を正確に決定するには、別のアプローチが必要です:
<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 for 125% scaling } }</code>
このコード スニペットは GetDeviceCaps
を利用して論理画面と物理画面の高さを比較し、正確なスケーリング係数を提供します。 たとえば、結果が 1.25 の場合は、125% のスケーリング レベルを示します。
以上がC# で Windows ディスプレイのスケーリング係数をプログラムで取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。