首頁 >後端開發 >C++ >C# 應用程式如何準確地擷取 Windows 顯示縮放因子?

C# 應用程式如何準確地擷取 Windows 顯示縮放因子?

Susan Sarandon
Susan Sarandon原創
2025-01-15 11:18:47841瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn