perubahan kesedaran DPI yang tidak dijangka selepas kemas kini aplikasi
Sesetengah aplikasi, yang asalnya direka sebagai DPI-Unaware (bergantung pada Skala UI Windows), secara tidak disangka-sangka menjadi DPI-Aware (Sistem sedar) berikutan kemas kini kecil. Ini berlaku walaupun aplikasi yang nyata dan kebergantungan luaran kekal tidak berubah.
punca akar:
Tingkah laku ini sering disebabkan oleh komponen atau kebergantungan pihak ketiga DPI. Walaupun dengan pengisytiharan DPI-unAware yang jelas dalam manifes aplikasi, kemasukan komponen tersebut dapat mengatasi tetapan, memaksa kesedaran DPI.
penyelesaian untuk menentukan kesedaran DPI:
Beberapa pendekatan dapat secara eksplisit mengawal kesedaran DPI aplikasi:
1. Mengubahsuai aplikasi yang nyata:
app.manifest
<code class="language-xml"><dpiaware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">false</dpiaware></code>
2. Menggunakan Fungsi API Windows:
Panggilan API yang sesuai bergantung pada versi 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. Menggunakan : AssemblyInfo.cs
<code class="language-csharp">[assembly: System.Windows.Media.DisableDpiAwareness]</code>
Pertimbangan penting:
Atas ialah kandungan terperinci Kenapa aplikasi DPI-Unaware saya tiba-tiba menjadi DPI-ALARA selepas kemas kini?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!