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

Wie kann ich den Windows-Anzeigeskalierungsfaktor in C# genau bestimmen?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-15 11:03:47293Durchsuche

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

Zugriff auf und Nutzung der Windows-Anzeigeskalierung in C#-Anwendungen

Windows-Benutzer können die Anzeigeskalierung anpassen, um die Größe von Text und UI-Elementen zu ändern. Diese Funktion ist von entscheidender Bedeutung für C#-Entwickler, die ihre Anwendungen für eine optimale Benutzererfahrung an unterschiedliche Skalierungseinstellungen anpassen müssen.

Skalierungsfaktor genau bestimmen

Standardmethoden wie Graphics.DpiX und DeviceCap.LOGPIXELSX können bei der Bestimmung des genauen Skalierungsfaktors unzuverlässig sein. Ein robusterer Ansatz besteht darin, den Faktor anhand logischer und physischer Bildschirmhöhen zu berechnen:

<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 logicalHeight = GetDeviceCaps(desktop, (int)DeviceCap.VERTRES);
        int physicalHeight = GetDeviceCaps(desktop, (int)DeviceCap.DESKTOPVERTRES);
        g.ReleaseHdc(desktop);
        return (float)physicalHeight / logicalHeight;
    }
}</code>

Diese Funktion nutzt GetDeviceCaps, um die logischen und physischen Bildschirmhöhen zu ermitteln. Der Skalierungsfaktor wird dann als Verhältnis dieser Höhen berechnet und bietet eine genaue Wiedergabe der Anzeigeskalierungseinstellungen des Benutzers. Dies gewährleistet ein konsistentes Anwendungsverhalten über verschiedene Anzeigekonfigurationen hinweg.

Das obige ist der detaillierte Inhalt vonWie kann ich den Windows-Anzeigeskalierungsfaktor in C# genau bestimmen?. 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