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
1107 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:

<application>
  <windowsSettings>
    <dpiAware>false</dpiAware>
  </windowsSettings>
</application>
Salin selepas log masuk
Sebagai alternatif, Windows API menawarkan kawalan programatik:

SetProcessDPIAware();
GetAwarenessFromDpiAwarenessContext(GetWindowDpiAwarenessContext(hWnd));
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!

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