Maison >développement back-end >C++ >Comment puis-je garantir correctement mes échelles d'application WinForms sur les écrans High-DPI?

Comment puis-je garantir correctement mes échelles d'application WinForms sur les écrans High-DPI?

DDD
DDDoriginal
2025-02-03 01:21:12386parcourir

How Can I Ensure My WinForms Application Scales Correctly on High-DPI Displays?

Échelle à DPI élevée pour les applications WinForms: un guide complet

Développer des applications WinForms pour les affichages à DPI élevé nécessite une attention particulière du comportement de mise à l'échelle. Pour éviter un texte flou et assurer un rendu optimal, les développeurs doivent mettre en œuvre la sensibilisation au DPI. Ceci est réalisé en modifiant le manifeste de l'application ou en utilisant p / invoquer.

Méthode 1: Modification du manifeste de l'application

L'approche la plus simple consiste à ajouter un paramètre de sensibilisation au DPI dans le fichier manifeste de votre application. Cela demande explicitement à l'application de gérer les paramètres DPI plus élevés, empêchant la mise à l'échelle bitmap par défaut de Windows.

  1. Ajoutez un nouveau "fichier manifeste d'application" à votre projet.
  2. Remplacez le contenu par le XML suivant:
<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>

Méthode 2: Utilisation de P / Invoke (pour les déploiements de clics)

Pour les déploiements de clics où la modification directe de manifeste n'est pas pratique, vous pouvez utiliser la fonction SetProcessDPIAware() via p / invoquer dans la méthode Main() de votre application:

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

En implémentant l'une de ces méthodes, votre application WinForms rendra un texte et des graphiques nets sur tous les paramètres DPI, offrant une expérience utilisateur cohérente et visuellement attrayante.

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