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

C# アプリケーションはどのようにして Windows ディスプレイのスケーリング係数を正確に取得できるのでしょうか?

Susan Sarandon
リリース: 2025-01-15 11:18:47
オリジナル
851 人が閲覧しました

How Can C# Applications Accurately Retrieve Windows Display Scaling Factors?

C# アプリケーションでの Windows ディスプレイ設定へのアクセス

Windows 7 以降のバージョンでは、カスタマイズ可能な表示設定が提供されており、ユーザーはテキスト サイズやその他の視覚的な側面を調整できます。 これらの設定にアクセスすることは、多くのアプリケーションにとって適切な機能を保証するために非常に重要です。

C# で Windows ディスプレイ スケーリングを取得する

C# は表示設定にアクセスできますが、graphics.DpiXDeviceCap.LOGPIXELSX のみに依存すると、すべてのレベルで正確なスケーリング係数が提供されない可能性があります。

より正確なスケーリング係数の計算

正確なスケーリング係数を決定するには、次の方法を使用します:

  1. gdi32.dll ライブラリをインポートします。

  2. デバイス機能の列挙体 (DeviceCap) を定義します。

  3. スケーリング係数を計算するメソッドを実装します:

    • デスクトップのグラフィックス コンテキスト (GDI) を取得します。
    • GetDeviceCaps を使用して、論理的および物理的な画面の高さをピクセル単位で取得します。
    • GDI ハンドルを解放します。
    • 物理的な高さを論理的な高さで割って倍率を計算します。

コード例:

<code class="language-csharp">using System;
using System.Drawing;
using System.Runtime.InteropServices;

public class DisplayScaler
{
    [DllImport("gdi32.dll")]
    static extern int GetDeviceCaps(IntPtr hdc, int nIndex);

    public enum DeviceCap
    {
        VERTRES = 10,
        DESKTOPVERTRES = 117
    }

    public float GetScalingFactor()
    {
        using (Graphics g = Graphics.FromHwnd(IntPtr.Zero))
        {
            IntPtr desktop = g.GetHdc();
            int logicalHeight = GetDeviceCaps(desktop, (int)DeviceCap.VERTRES);
            int physicalHeight = GetDeviceCaps(desktop, (int)DeviceCap.DESKTOPVERTRES);
            g.ReleaseHdc(desktop);
            return (float)physicalHeight / logicalHeight;
        }
    }
}</code>
ログイン後にコピー

このアプローチにより、C# アプリケーションは Windows ディスプレイのスケーリング係数を正確に取得できるようになり、ユーザーのディスプレイ設定に基づいて調整できるようになります。

以上がC# アプリケーションはどのようにして Windows ディスプレイのスケーリング係数を正確に取得できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート