Heim >Backend-Entwicklung >C++ >Wie kann ich den Windows-Anzeigeskalierungsfaktor in C# programmgesteuert abrufen?

Wie kann ich den Windows-Anzeigeskalierungsfaktor in C# programmgesteuert abrufen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-15 12:10:43500Durchsuche

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

Zugriff auf Windows-Anzeigeeinstellungen in C#

Windows 7 und spätere Versionen bieten eine Systemsteuerungseinstellung, mit der Benutzer die Größe von Text und UI-Elementen anpassen können. C#-Entwickler müssen diese Einstellung häufig für dynamisches Anwendungsverhalten abrufen.

Eine praktische Lösung

Die direkte Verwendung von graphics.DpiX und DeviceCap.LOGPIXELSX gibt unerwartet einen festen Wert (96 DPI) zurück, unabhängig von der tatsächlichen Skalierung. Um den Skalierungsfaktor genau zu bestimmen, ist ein anderer Ansatz erforderlich:

<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>

Dieses Code-Snippet nutzt GetDeviceCaps, um logische und physische Bildschirmhöhen zu vergleichen und so einen präzisen Skalierungsfaktor bereitzustellen. Ein Ergebnis von 1,25 weist beispielsweise auf eine Skalierungsstufe von 125 % hin.

Das obige ist der detaillierte Inhalt vonWie kann ich den Windows-Anzeigeskalierungsfaktor in C# programmgesteuert abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn