High-DPI-Skalierung für WinForms-Anwendungen: Eine umfassende Anleitung
Entwicklung von WinForms-Anwendungen für hoch-DPI-Anzeigen erfordert eine sorgfältige Berücksichtigung des Skalierungsverhaltens. Um verschwommene Text zu vermeiden und eine optimale Darstellung zu gewährleisten, sollten Entwickler das DPI -Bewusstsein implementieren. Dies wird erreicht, indem entweder das Anwendungsmanifest geändert oder P/Invoke verwendet wird.
Methode 1: Ändern des Anwendungsmanifests
Der einfachste Ansatz besteht darin, der Manifestdatei Ihrer Anwendung eine DPI -Bewusstseinseinstellung hinzuzufügen. Dadurch wird die Anwendung ausdrücklich angewiesen, höhere DPI -Einstellungen auszuführen und die Standard -Bitmap -Skalierung von Windows zu verhindern.
<code class="language-xml"><?xml version="1.0" encoding="utf-8"?> <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"> <assemblyIdentity name="MyApplication.app" version="1.0.0.0" /> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> <requestedExecutionLevel level="asInvoker" uiAccess="false" /> </requestedPrivileges> </security> </trustInfo> <application> <windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings"> <dpiAware>true</dpiAware> </windowsSettings> </application> </assembly></code>
Methode 2: Verwenden Sie P/Invoke (für ClickOnce -Bereitstellungen)
Für ClickOnce -Bereitstellungen, bei denen die Direktmanifest -Änderung nicht praktisch ist. Sie können die Funktion SetProcessDPIAware()
über P/Invoke in der Methode Ihrer Anwendung verwenden: Main()
<code class="language-csharp">[STAThread] static void Main() { if (Environment.OSVersion.Version.Major >= 6) SetProcessDPIAware(); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); // Adjust as needed } [System.Runtime.InteropServices.DllImport("user32.dll")] private static extern bool SetProcessDPIAware();</code>
Das obige ist der detaillierte Inhalt vonWie kann ich sicherstellen, dass meine WinForms-Anwendungsskalen korrekt auf Hoch-DPI-Anzeigen skaliert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!