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>
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();
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!