Heim >Backend-Entwicklung >C++ >Wie kann ich verschwommene Text in meiner Windows Forms -Anwendung in hohen DPI -Einstellungen beheben?

Wie kann ich verschwommene Text in meiner Windows Forms -Anwendung in hohen DPI -Einstellungen beheben?

Patricia Arquette
Patricia ArquetteOriginal
2025-02-03 01:16:09484Durchsuche

How Can I Fix Blurry Text in My Windows Forms Application at High DPI Settings?

Scharfe Textwiedergabe in High-DPI-Windows-Formulare-Anwendungen

hohe DPI -Einstellungen (150% und höher) können aufgrund des Standard -Skalierungsmechanismus von Windows einen verschwommenen Text in Windows -Formularenanwendungen verursachen. Um ein klares Textrendern zu erzielen, muss Ihre Bewerbung ihre Kompatibilität mit hoher DPI ausdrücklich erklären. Dies erfolgt durch Ändern des Anwendungsmanifests oder der Verwendung eines P/Invoke -Aufrufs.

Methode 1: Ändern des Anwendungsmanifests

  1. Fügen Sie Ihrem Projekt eine neue "Anwendungsmanifestdatei" hinzu.
  2. Ersetzen Sie den Inhalt durch den folgenden XML:
<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ügen Sie für ClickOnce -Bereitstellungen den folgenden Code Ihrer Main() -Methode hinzu:

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

Durch die Implementierung einer der beiden Methoden wird Ihre Anwendung mit hoher DPI-Skalierung korrekt behandelt, um eine scharfe Textanzeige auf hochauflösenden Bildschirmen zu gewährleisten.

Das obige ist der detaillierte Inhalt vonWie kann ich verschwommene Text in meiner Windows Forms -Anwendung in hohen DPI -Einstellungen beheben?. 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