ホームページ >バックエンド開発 >C++ >C# で Windows ディスプレイのスケーリング係数を正確に取得するにはどうすればよいですか?

C# で Windows ディスプレイのスケーリング係数を正確に取得するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-15 11:10:50367ブラウズ

How Can I Accurately Retrieve Windows Display Scaling Factor in C#?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。