DPI L'application non au courant est soudainement devenue consciente du système: guide de dépannage
Ce document aborde un scénario où une application précédemment DPI-UNAWARE est passé de manière inattendue au mode de conscience du système DPI sans modifications de code. Ce changement perturbe la dépendance de l'application à la virtualisation des fenêtres pour la mise à l'échelle.
Le problème: Une application, fonctionnant auparavant comme DPI, intention, présente désormais un comportement de conscience du système DPI.
Cause probable: La cause la plus probable est l'introduction d'une dépendance DPI-AWARE, directement ou indirectement. La référence des composants DPI-AWARE peut déclencher l'héritage de leur réglage de sensibilisation au DPI.
Stratégies de résolution:
Plusieurs méthodes peuvent restaurer le statut de DPI non au courant de l'application:
Désactiver explicitement la conscience du DPI (assemblyinfo.cs): Ajoutez l'attribut suivant à votre fichier AssemblyInfo.cs
pour remplacer tout paramètres de sensibilisation DPI hérités:
<code class="language-csharp">[assembly: System.Windows.Media.DisableDpiAwareness]</code>
Configuration manifeste de l'application: Dans votre fichier manifeste d'application, définissez explicitement le mode DPI inhabituel:
<code class="language-xml"><dpiaware>false</dpiaware></code>
Approche de l'API Windows: Utilisez les fonctions API Windows appropriées pour définir le contexte de sensibilisation au DPI du processus:
SetProcessDPIAware()
SetProcessDpiAwareness()
ou SetProcessDpiAwarenessContext()
SetProcessDpiAwarenessContext()
avec DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED
pour une compatibilité optimale. Per-Thread DPI Sensibilisation (si nécessaire): Pour un contrôle plus granulaire, envisagez d'utiliser SetThreadDpiAwarenessContext()
pour gérer la conscience du DPI sur une base par thread. Cette approche est généralement moins préférée sauf si nécessaire.
En mettant en œuvre l'une de ces solutions, vous devriez être en mesure de revenir à votre application à son comportement DPI intentionné et de résoudre les problèmes de mise à l'échelle. Envisagez de tester soigneusement après la mise en œuvre de chaque méthode.
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!