DPI Sensibilisation: Windows Bitmap Scaling (6.0) vs System Aware (6.1)
Cette étude de cas examine une application initialement conçue comme DPI-UNAWARE, en s'appuyant sur la mise à l'échelle de Bitmap Windows pour les écrans à DPI élevés. Une mise à jour de la version 6.1 a modifié de façon inattendue sa conscience du DPI à conscience du système, ce qui entraîne une distorsion de l'interface utilisateur.
Dépannage du problème
La cause profonde est un composant tiers nouvellement inclus dans la version mise à jour. Malgré la conscience inhérente de la DPI-UNAW, le composant tiers a introduit la sensibilisation au DPI.
Gérer la conscience du DPI
La sensibilisation au DPI peut être explicitement contrôlée dans le manifeste de l'application:
<code class="language-xml"><application> <windowsSettings> <dpiAware>false</dpiAware> </windowsSettings> </application></code>
Alternativement, les API Windows offrent un contrôle programmatique:
<code class="language-csharp">SetProcessDPIAware(); GetAwarenessFromDpiAwarenessContext(GetWindowDpiAwarenessContext(hWnd));</code>
Solution
Pour revenir à DPI-UNAWARED, Ajoutez <dpiAware>false</dpiAware>
au manifeste de l'application. Si un composant tiers force la conscience du DPI, envisagez d'ajouter System.Windows.Media.DisableDpiAwareness
à AssemblyInfo.cs
pour remplacer le comportement indésirable.
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!