Memperbaiki masalah HDPI/penskalakan dengan Formulir Windows Designer di Visual Studio

Dalam artikel ini, Anda mempelajari cara mengatasi masalah penyajian karena keterbatasan penskalaan Formulir Windows Designer pada monitor HDPI dengan menjalankan Visual Studio sebagai proses yang tidak menyadari DPI. HDPI adalah singkatan dari titik tinggi per inci, dengan setiap titik mewakili piksel perangkat fisik.

Kepadatan piksel yang lebih tinggi menciptakan gambar yang lebih tajam, dan menampilkan elemen ukuran penskalaan dengan benar. Tanpa penskalakan yang tepat, elemen dan teks antarmuka pengguna (UI) terlalu kecil untuk digunakan secara efektif dan dapat tumpang tindih. Untuk membantu memperbaiki masalah ini, Windows secara otomatis menskalakan persentil UI agar sesuai dengan pengaturan DPI. Misalnya, pengaturan DPI 100% mewakili 96 DPI dan 125% adalah 120 DPI. Monitor digunakan untuk mengirim dengan 96 piksel per inci, yang digunakan Windows sebagai garis besar untuk gambar bitmap 100%. Namun, sebagai teknologi tampilan canggih, monitor sekarang dikirim dengan panel 300 DPI atau lebih tinggi.

Ketika aplikasi mendeklarasikan dirinya sebagai sadar DPI, itu adalah pernyataan yang menentukan bahwa aplikasi berulah dengan baik pada pengaturan DPI yang lebih tinggi, dan sehingga Windows dapat menerapkan penskalaan otomatis. Sebaliknya, aplikasi yang tidak menyadari DPI merender pada nilai DPI tetap 96 piksel per inci, atau 100%, sehingga penskalaan otomatis tidak diterapkan.

Formulir Windows Designer tidak menyadari DPI

Catatan

Di Visual Studio 2022 versi 17.8 atau yang lebih baru, Anda dapat menghindari masalah yang dijelaskan dalam artikel ini. Visual Studio 2022 versi 17.8 menyediakan dukungan untuk tab DPI-unaware dalam aplikasi yang sadar DPI. Lihat Peningkatan Visual Studio DPI. Ini memungkinkan Anda merancang Formulir Windows untuk konteks yang tidak menyadari DPI, tanpa mengharuskan Anda menjalankan Visual Studio dalam mode tidak sadar DPI. Untuk menggunakan pengaturan ini dalam proyek Formulir Windows, atur properti ForceDesignerDPIUnaware ke true dalam file proyek Anda:

<PropertyGroup>
  ...
  <ForceDesignerDPIUnaware>true</ForceDesignerDPIUnaware>
</PropertyGroup>

Secara default, Visual Studio adalah aplikasi sadar titik per inci (DPI), yang berarti tampilan diskalakan secara otomatis. Namun, Formulir Windows Designer adalah aplikasi yang tidak menyadari DPI, sehingga muncul sebagai bitmap di 96 DPI. Tanpa dukungan penskalaan otomatis, masalah dan tumpang tindih muncul saat membuka formulir pada monitor HDPI, seperti pada gambar ini:

Screenshot of Windows Forms Designer on HDPI monitor that shows issues due to lack of autoscaling support.

Saat Anda membuka formulir di Formulir Windows Designer pada monitor HDPI, Visual Studio menampilkan bilah info yang menampilkan persentase penskalaan monitor saat ini (misalnya, 150%/144 DPI), opsi untuk memulai ulang Visual Studio pada penskalaan 100% agar sesuai dengan Formulir Windows Designer, dan informasi lebih lanjut. Memulai ulang pada penskalaan 100% membuat VS DPI tidak sadar, memungkinkan penyajian yang tepat tanpa tumpang tindih.

Screenshot of the information bar in Visual Studio to restart in DPI-unaware mode.

Tip

  1. Jika Anda menutup bilah informasi dan ingin memulai ulang Visual Studio sebagai tidak sadar DPI, gunakan alat DevEnv.exe.
  2. Jika Anda tidak bekerja di perancang, Anda dapat mengabaikan bilah informasi. Anda juga dapat menonaktifkan pemberitahuan sehingga bilah informasi tidak terus muncul.

Menghidupkan ulang Visual Studio sebagai proses yang tidak menyadari DPI

Solusi yang direkomendasikan untuk mengatasi masalah UI ini adalah memulai ulang Visual Studio sebagai proses DPI-unaware, yang berarti bahwa ia memulai ulang pada penskalaan 100% (96 DPI).

Untuk beralih ke DPI-unaware:

  • Pilih opsi "Hidupkan ulang Visual Studio dengan penskalaan 100%" pada bilah informasi kuning yang muncul saat Anda membuka formulir di Formulir Windows Designer.

Penting untuk memulai ulang Visual Studio untuk mengembalikannya ke default sebagai proses sadar DPI saat Anda selesai bekerja di Formulir Windows Designer.

Untuk kembali ke sadar DPI:

  • Tutup dan buka kembali Visual Studio untuk kembali ke sadar DPI lagi. Atau, pilih opsi Mulai Ulang Visual Studio sebagai proses sadar DPI di bilah informasi.

Saat Visual Studio berjalan sebagai tidak sadar DPI, masalah tata letak perancang diselesaikan, namun font mungkin tampak buram dan masalah dapat muncul di perancang lain seperti Perancang XAML. Visual Studio menampilkan pesan informasi yang berbeda saat tidak menyadari DPI yang mengatakan "Visual Studio berjalan sebagai proses yang tidak diketahui DPI. Perancang WPF dan XAML mungkin tidak ditampilkan dengan benar."

Catatan

  • Jika Anda memiliki jendela alat yang dilepas setelah Anda memilih opsi untuk memulai ulang Visual Studio sebagai proses tidak menyadari DPI, posisi jendela alat mungkin berubah.
  • Jika Anda menggunakan profil Visual Basic default, atau jika opsi Simpan proyek baru saat dibuat tidak dipilih di Alat>Opsi>Proyek dan Solusi, Visual Studio tidak dapat membuka kembali proyek Anda saat dihidupkan ulang sebagai proses yang tidak menyadari DPI. Namun, Anda dapat membuka proyek dengan memilihnya di bawah File>Proyek dan Solusi Terbaru.

Catatan

  • Jika Anda melepas jendela alat setelah memilih opsi untuk memulai ulang Visual Studio sebagai proses yang tidak menyadari DPI, posisi jendela alat mungkin berubah.
  • Profil Visual Basic default tidak akan membuka kembali proyek saat Visual Studio dimulai ulang sebagai proses tidak sadar DPI. Sebagai gantinya, akses proyek Anda melalui Proyek dan Solusi Terbaru File>.

Gunakan Windows untuk mengatur penskalakan tampilan Anda ke 100%

Untuk menghindari penggunaan Visual Studio untuk mengalihkan penskalakan tampilan, sesuaikan penskalan di pengaturan Windows. Misalnya, di Windows 11, Anda dapat mengatur penskalaan ke 100% (96 DPI).

Untuk melakukannya, ketik pengaturan tampilan di kotak pencarian bilah tugas, lalu pilih Ubah pengaturan tampilan. Di jendela Pengaturan, atur Ubah ukuran teks, aplikasi, dan item lainnya menjadi 100%. Ketahuilah bahwa penskalaan 100% (96 DPI) dapat membuat antarmuka pengguna terlalu kecil untuk penggunaan praktis.

Menonaktifkan penskalakan dengan menggunakan alat baris perintah DevEnv

Untuk mengelola pengaturan tampilan Anda dengan menggunakan alat baris perintah daripada alat UI (antarmuka pengguna), gunakan DevEnv.exe. Perintah devenv.exe ini mengambil /noscale sebagai parameter baris perintah untuk dijalankan dalam mode penskalakan 100%. Berikut cara menggunakannya:

  1. Pilih Alat>Baris Perintah>Baris Perintah Pengembang dari bilah menu Visual Studio.
  2. Kemudian masukkan devenv /noScale.

Opsi lain

Selain opsi yang disebutkan di atas, Anda juga dapat mencoba opsi berikut:

Pemecahan masalah

Jika transisi kesadaran DPI tidak berfungsi di Visual Studio, pastikan dpiAwareness nilai TIDAK ada di HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\devenv.exe subkey di Editor Registri. Hapus nilai jika ada.