Heim >Backend-Entwicklung >C++ >Wie kann ich den Windows-Anzeigeskalierungsfaktor in C# programmgesteuert abrufen?
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!