Rumah > pembangunan bahagian belakang > C++ > Kenapa aplikasi DPI-Unaware saya tiba-tiba mempamerkan penyimpangan UI selepas mengemas kini ke sistem sedar?

Kenapa aplikasi DPI-Unaware saya tiba-tiba mempamerkan penyimpangan UI selepas mengemas kini ke sistem sedar?

Barbara Streisand
Lepaskan: 2025-01-28 09:06:11
asal
1005 orang telah melayarinya

Why Does My DPI-Unaware Application Suddenly Exhibit UI Distortion After Updating to System Aware?

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>
Salin selepas log masuk
Sebagai alternatif, Windows API menawarkan kawalan programatik:

<code class="language-csharp">SetProcessDPIAware();
GetAwarenessFromDpiAwarenessContext(GetWindowDpiAwarenessContext(hWnd));</code>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan