Heim >Backend-Entwicklung >C++ >Wie können C#-Anwendungen Skalierungsfaktoren für die Windows-Anzeige genau abrufen?

Wie können C#-Anwendungen Skalierungsfaktoren für die Windows-Anzeige genau abrufen?

Susan Sarandon
Susan SarandonOriginal
2025-01-15 11:18:47840Durchsuche

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

Zugriff auf Windows-Anzeigeeinstellungen in C#-Anwendungen

Windows 7 und spätere Versionen bieten anpassbare Anzeigeeinstellungen, mit denen Benutzer die Textgröße und andere visuelle Aspekte anpassen können. Der Zugriff auf diese Einstellungen ist für viele Anwendungen von entscheidender Bedeutung, um die ordnungsgemäße Funktionalität sicherzustellen.

Windows-Anzeigeskalierung in C# abrufen

Obwohl C# auf Anzeigeeinstellungen zugreifen kann, liefert die alleinige Verwendung von graphics.DpiX und DeviceCap.LOGPIXELSX möglicherweise nicht genaue Skalierungsfaktoren auf allen Ebenen.

Eine genauere Berechnung des Skalierungsfaktors

Zur präzisen Bestimmung des Skalierungsfaktors verwenden Sie diese Methode:

  1. Importieren Sie die gdi32.dll Bibliothek.

  2. Definieren Sie eine Aufzählung für Gerätefunktionen (DeviceCap).

  3. Implementieren Sie eine Methode zur Berechnung des Skalierungsfaktors:

    • Besorgen Sie sich den Grafikkontext (GDI) für den Desktop.
    • Verwenden Sie GetDeviceCaps, um die logischen und physischen Bildschirmhöhen in Pixel abzurufen.
    • Lassen Sie den GDI-Griff los.
    • Berechnen Sie den Skalierungsfaktor, indem Sie die physische Höhe durch die logische Höhe dividieren.

Codebeispiel:

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

Dieser Ansatz stellt sicher, dass C#-Anwendungen den Windows-Anzeigeskalierungsfaktor genau abrufen und Anpassungen basierend auf den Anzeigeeinstellungen des Benutzers ermöglichen.

Das obige ist der detaillierte Inhalt vonWie können C#-Anwendungen Skalierungsfaktoren für die Windows-Anzeige genau 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