kesedaran DPI: Windows Bitmap Scaling (6.0) vs Sistem sedar (6.1)
Kajian kes ini meneliti aplikasi yang pada mulanya direka sebagai DPI-Unaware, bergantung pada skala Bitmap Windows untuk paparan DPI tinggi. Kemas kini ke Versi 6.1 secara tidak disangka -sangka mengubah kesedaran DPInya kepada sistem yang sedar, mengakibatkan penyimpangan UI.
Menyelesaikan masalah isu
Sebab akar adalah komponen pihak ketiga yang baru termasuk dalam versi yang dikemas kini. Walaupun DPI-kesahihan aplikasi yang wujud, komponen pihak ketiga memperkenalkan kesedaran DPI.
Menguruskan kesedaran DPI
kesedaran DPI boleh dikawal secara eksplisit dalam manifes permohonan:
<code class="language-xml"><application> <windowsSettings> <dpiAware>false</dpiAware> </windowsSettings> </application></code>
<code class="language-csharp">SetProcessDPIAware(); GetAwarenessFromDpiAwarenessContext(GetWindowDpiAwarenessContext(hWnd));</code>
Penyelesaian
untuk kembali ke DPI-kesahihan, tambahkan ke manifes aplikasi. Sekiranya komponen pihak ketiga memaksa kesedaran DPI, pertimbangkan untuk menambah <dpiAware>false</dpiAware>
ke System.Windows.Media.DisableDpiAwareness
untuk mengatasi tingkah laku yang tidak diingini. AssemblyInfo.cs
Atas ialah kandungan terperinci Kenapa aplikasi DPI-Unaware saya tiba-tiba mempamerkan penyimpangan UI selepas mengemas kini ke sistem sedar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!