Heim >Backend-Entwicklung >C++ >Wie kann ich dazu führen, dass meine Windows-Anwendungen einen knusprigen Text auf High-DPI-Bildschirmen anzeigen?

Wie kann ich dazu führen, dass meine Windows-Anwendungen einen knusprigen Text auf High-DPI-Bildschirmen anzeigen?

Patricia Arquette
Patricia ArquetteOriginal
2025-02-03 01:31:09931Durchsuche

How Can I Make My Windows Applications Display Crisp Text on High-DPI Screens?

Erreichen von knackigem Textumschlag in Windows-Anwendungen mit hohen DPI

hochauflösende Anzeigen zeigen eine Herausforderung für Windows-Anwendungen: Skalierte Schnittstellen führen häufig zu verschwommenem Text. Dies ist eine Folge der Bitmap-basierten DPI-Virtualisierung von Windows. Um dies zu beheben und einen scharfen Text sicherzustellen, müssen Anwendungen ihre Fähigkeit ausdrücklich erklären, hohe DPI -Einstellungen auszusetzen.

Aktivierung der Kompatibilität mit hoher DPI: Der Manifest-Ansatz

Die Lösung beinhaltet die Änderung der Manifestdatei Ihrer Anwendung. Hinzufügen der <dpiaware> -Elementsignale zu Windows, die Ihre Anwendung unterstützt, unterstützt hohe DPI. Hier ist der notwendige Manifestcode:

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

Alternativ: programmatischer Ansatz (ClickOnce -Bereitstellungen)

Für ClickOnce -Bereitstellungen können Sie SetProcessDPIAware() in der Methode Main() verwenden:

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

Visual Studio 2015 Update 1 und später:

Neuere Versionen von Visual Studio (Update 1 und später) vereinfachen dies. Die Manifestdatei ist in neuen Projekten enthalten. einfach das <dpiaware> tag.

Zusammenfassung:

, indem Sie Ihre Anwendung DPI-AWWARE (über die Manifest oder SetProcessDPIAware()) deklarieren, umgehen Sie die DPI-Virtualisierungsbeschränkungen von Windows. Dies gewährleistet scharfe, skalierbare Textrendern auf High-DPI-Bildschirmen und verbessert die Benutzererfahrung erheblich.

Das obige ist der detaillierte Inhalt vonWie kann ich dazu führen, dass meine Windows-Anwendungen einen knusprigen Text auf High-DPI-Bildschirmen anzeigen?. 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