Maison > développement back-end > C++ > Comment puis-je faire afficher le texte net de mes applications Windows sur les écrans High-DPI?

Comment puis-je faire afficher le texte net de mes applications Windows sur les écrans High-DPI?

Patricia Arquette
Libérer: 2025-02-03 01:31:09
original
990 Les gens l'ont consulté

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

Atteindre le rendu de texte net dans les applications Windows High-DPI

Les écrans haute résolution présentent un défi pour les applications Windows: les interfaces à l'échelle conduisent souvent à un texte flou. Ceci est une conséquence de la virtualisation DPI basée sur Bitmap de Windows. Pour résoudre ce problème et assurer un texte net, les applications doivent déclarer explicitement leur capacité à gérer les paramètres DPI élevés.

Activer la compatibilité élevée du DPI: l'approche manifeste

La solution consiste à modifier le fichier manifeste de votre application. Ajout des signaux d'élément <dpiaware> à Windows que votre application prend en charge un DPI élevé. Voici le code manifeste nécessaire:

<?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>
Copier après la connexion

Alternative: approche programmatique (ClickOce Deployments)

Pour les déploiements de clics, vous pouvez utiliser SetProcessDPIAware() dans la méthode Main():

[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();
Copier après la connexion

Visual Studio 2015 Mise à jour 1 et ultérieure:

Les versions plus récentes de Visual Studio (mise à jour 2015 1 et ultérieure) simplifient cela. Le fichier manifeste est inclus dans de nouveaux projets; non-comment le <dpiaware> balise.

Résumé:

En déclarant votre application dpi-aware (via le manifeste ou SetProcessDPIAware()), vous contournez les limitations de virtualisation DPI de Windows. Cela garantit un texte net et évolutif sur des écrans à DPI élevés, améliorant considérablement l'expérience utilisateur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal