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
Freigeben: 2025-02-03 01:31:09
Original
930 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage