Maison >développement back-end >C++ >Comment puis-je corriger le texte flou dans mon application WinForms sur des écrans High-DPI?

Comment puis-je corriger le texte flou dans mon application WinForms sur des écrans High-DPI?

DDD
DDDoriginal
2025-02-03 01:26:09301parcourir

How Can I Fix Blurry Text in My WinForms App on High-DPI Displays?

Texte de mise à l'échelle et de floue de dpi élevé dans les applications WinForms

Les applications WinForms rencontrent souvent du texte floue lors de l'exécution sur des écrans à DPI élevés (150% ou plus). Cela se produit parce que Windows est par défaut à l'échelle bitmap, entraînant un mauvais rendu de texte.

Comprendre la manipulation de Windows DPI

Windows évolue automatiquement les applications dépassant 100% DPI (ou 125% avec "Échelle DPI de style XP"). Ce processus d'échelle bitmap conduit au problème de texte flou.

La solution: la conscience DPI

La clé pour résoudre ceci est de faire de votre application dpi-aware. Cela lui permet de gérer la mise à l'échelle de manière appropriée, rendant le texte net à des résolutions plus élevées. Cela peut être réalisé grâce à une modification manifeste ou p / invoque, selon votre méthode de déploiement.

Méthode 1: Modification de fichiers manifeste

Modifiez le fichier manifeste de votre application pour déclarer la sensibilisation au DPI. Ajouter ou décommenter ce qui suit dans la balise <application>:

<code class="language-xml"><windowsSettings>
  <dpiAware>true</dpiAware>
</windowsSettings></code>

Méthode 2: p / invoquer pour les déploiements de clics

Si vous utilisez le déploiement de ClickOce, utilisez P / Invoke pour appeler SetProcessDPIAware() dans votre méthode 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>

Méthode 3: Visual Studio 2015 et plus tard

Visual Studio 2015 La mise à jour 1 et les versions ultérieures incluent généralement les directives de sensibilisation DPI nécessaires dans le manifeste, mais elles pourraient être commentées. Supprimez simplement les commentaires pour activer cette fonctionnalité.

En mettant en œuvre l'une de ces méthodes, votre application WinForms gérera correctement les paramètres à DPI élevés, entraînant un rendu de texte net et clair.

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