Modifications inattendues de sensibilisation au DPI après les mises à jour de l'application
Certaines applications, conçues à l'origine comme DPI-UNAWARE (en s'appuyant sur la mise à l'échelle de l'interface utilisateur de Windows), peuvent devenir inattendues DPI-AWARE (System Aware) après des mises à jour mineures. Cela se produit même si la manifeste de l'application et les dépendances externes restent inchangées.
Cause profonde:
Ce comportement est souvent causé par des composants ou des dépendances tiers Aware Aware. Même avec une déclaration explicite DPI-UNAWARE dans le manifeste de l'application, l'inclusion de ces composants peut remplacer le paramètre, forçant la conscience de la DPI.
Solutions pour définir la sensibilisation au DPI:
Plusieurs approches peuvent contrôler explicitement la sensibilisation au DPI d'une application:
1. Modification du manifeste des applications:
app.manifest
pour inclure (ou décomancement) ce qui suit: <code class="language-xml"><dpiaware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">false</dpiaware></code>
2. Utilisation des fonctions de l'API Windows:
L'appel API approprié dépend de la version Windows:
<code class="language-csharp">[DllImport("user32.dll", SetLastError = true)] static extern bool SetProcessDPIAware();</code>
<code class="language-csharp">[DllImport("shcore.dll")] static extern int SetProcessDpiAwareness(ProcessDPIAwareness value); enum ProcessDPIAwareness { DPI_Unaware = 0, System_DPI_Aware = 1, Per_Monitor_DPI_Aware = 2 }</code>
<code class="language-csharp">[DllImport("user32.dll", SetLastError = true)] static extern int SetProcessDpiAwarenessContext(DpiAwarenessContext value); enum DpiAwarenessContext { Context_Unaware = (DPI_AWARENESS_CONTEXT)-1, Context_SystemAware = (DPI_AWARENESS_CONTEXT)-2, Context_PerMonitorAware = (DPI_AWARENESS_CONTEXT)-3, Context_PerMonitorAwareV2 = (DPI_AWARENESS_CONTEXT)-4 }</code>
3. En utilisant AssemblyInfo.cs
:
Ajoutez cet attribut pour remplacer la conscience DPI définie par le système basé sur les références de composants:
<code class="language-csharp">[assembly: System.Windows.Media.DisableDpiAwareness]</code>
Considérations importantes:
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!