ホームページ >バックエンド開発 >C++ >C# で Windows ディスプレイのスケーリング係数をプログラムで取得する方法

C# で Windows ディスプレイのスケーリング係数をプログラムで取得する方法

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

How to Programmatically Retrieve Windows Display Scaling Factor in C#?

C# で Windows ディスプレイ設定にアクセスする

Windows 7 以降のバージョンには、ユーザーがテキストと UI 要素のサイズを調整できるコントロール パネル設定が用意されています。 C# 開発者は、多くの場合、アプリケーションの動的な動作のためにこの設定を取得する必要があります。

実用的な解決策

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

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