Visual Studio'da Windows Forms Tasarım Aracı ile ilgili HDPI/ölçeklendirme sorunlarını düzeltme

Bu makalede, Visual Studio'yu DPI farkında olmayan bir işlem olarak çalıştırarak HDPI monitörlerinde Windows Forms Tasarım Aracı ölçeklendirme sınırlamaları nedeniyle işleme sorunlarını gidermeyi öğreneceksiniz. HDPI, her nokta fiziksel bir cihaz pikseli temsil eden inç başına yüksek noktalar anlamına gelir.

Daha yüksek piksel yoğunluğu daha net görüntüler oluşturur ve ölçeklendirme boyutlarını düzgün bir şekilde görüntüler. Düzgün ölçeklendirme olmadan, kullanıcı arabirimi (UI) öğeleri ve metinleri etkili bir şekilde kullanmak için çok küçüktür ve çakışabilir. Bu sorunun giderilmesine yardımcı olmak için Windows, kullanıcı arabirimi yüzde birlik değerini otomatik olarak DPI ayarıyla eşleşecek şekilde ölçeklendirir. Örneğin, %100 DPI ayarı 96 DPI'yı ve %125'i 120 DPI'yı temsil eder. Windows'un %100 bit eşlem çizimi için taban çizgisi olarak kullandığı, inç başına 96 piksel ile göndermek için kullanılan monitörler. Ancak ekran teknolojisi ilerledikçe monitörler artık 300 DPI veya üzeri panellerle birlikte geliyor.

Bir uygulama kendisini DPI kullanan olarak bildirdiğinde, uygulamanın daha yüksek DPI ayarlarında iyi davrandığını ve böylece Windows'un otomatik ölçeklendirme uygulayabileceğini belirten bir deyimdir. Buna karşılık, DPI'sız uygulamalar inç başına 96 piksel veya %100 sabit bir DPI değerinde işlenir ve bu nedenle otomatik ölçeklendirme uygulanmaz.

Windows Forms Tasarım Aracı DPI'dır ve farkında değildir

Not

Visual Studio 2022 sürüm 17.8 veya sonraki sürümlerinde, bu makalede açıklanan sorunlardan kaçınabilirsiniz. Visual Studio 2022 sürüm 17.8, DPI kullanan bir uygulama içinde DPI'nin farkında olmayan sekmeler için destek sağlar. Bkz. Visual Studio DPI geliştirmeleri. Bu, Visual Studio'yu DPI-farkında olmayan modda çalıştırmanıza gerek kalmadan DPI'sız bağlamlar için Windows Forms tasarlamanıza olanak tanır. Bu ayarı bir Windows Forms projesinde kullanmak için, özelliğini ForceDesignerDPIUnaware proje dosyanızda olarak true ayarlayın:

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

Varsayılan olarak, Visual Studio inç başına nokta (DPI) kullanan bir uygulamadır ve bu da ekranın otomatik olarak ölçeklendirildiği anlamına gelir. Ancak, Windows Forms Tasarım Aracı bir DPI'sız uygulama olduğundan 96 DPI'da bit eşlem olarak görünür. Otomatik ölçeklendirme desteği olmadan, bu görüntüdeki gibi HDPI monitörlerde formlar açılırken sorunlar ve örtüşmeler ortaya çıkar:

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

HdPI monitöründe Windows Forms Tasarım Aracı bir form açtığınızda Visual Studio, izleyicinin geçerli ölçeklendirme yüzdesini (örneğin, %150/144 DPI) görüntüleyen bir bilgi çubuğu, Windows Forms Tasarım Aracı eşleşecek şekilde Visual Studio'yu %100 ölçeklendirmede yeniden başlatma seçeneği ve daha fazla bilgi görüntüler. %100 ölçeklendirmede yeniden başlatma, VS DPI'yi habersiz hale getirerek çakışma olmadan düzgün işlemeye olanak sağlar.

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

İpucu

  1. Bilgi çubuğunu kapattıysanız ve Visual Studio'yu DPI-unaware olarak yeniden başlatmak istiyorsanız DevEnv.exe aracını kullanın.
  2. Tasarımcıda çalışmıyorsanız, bilgi çubuğunu yoksayabilirsiniz. Bilgi çubuğunun görünmeye devam etmemesi için bildirimleri de devre dışı bırakabilirsiniz.

Visual Studio'yu DPI'nın farkında olmayan bir işlem olarak yeniden başlatma

Bu kullanıcı arabirimi sorunlarını çözmek için önerilen çözüm Visual Studio'yu DPI'sız bir işlem olarak yeniden başlatmaktır; bu da %100 ölçeklendirmede (96 DPI) yeniden başlatıldığı anlamına gelir.

DPI-unaware'e geçmek için:

  • Windows Forms Tasarım Aracı'da form açtığınızda görüntülenen sarı bilgi çubuğundaki "Visual Studio'yu %100 ölçeklendirmeyle yeniden başlat" seçeneğini belirleyin.

Windows Forms Tasarım Aracı çalışmayı bitirdiğinizde Visual Studio'yu DPI kullanan bir işlem olarak varsayılana döndürmek için yeniden başlatmanız önemlidir.

DPI kullanana dönmek için:

  • DPI kullanana geri dönmek için Visual Studio'yu kapatıp yeniden açın. Alternatif olarak, bilgi çubuğunda Visual Studio'yu DPI kullanan işlem olarak yeniden başlat seçeneğini belirleyin.

Visual Studio DPI farkında değil olarak çalıştığında tasarımcı düzeni sorunları çözülür, ancak yazı tipleri bulanık görünebilir ve sorunlar XAML Tasarım Aracı gibi diğer tasarımcılarda görünebilir. Visual Studio, DPI farkında değilken "Visual Studio, DPI'den habersiz bir işlem olarak çalışıyor. WPF ve XAML tasarımcıları doğru görüntülenmeyebilir."

Not

  • DPI'sız bir işlem olarak Visual Studio'yu yeniden başlatma seçeneğini belirledikten sonra çıkarılmış araç pencereleriniz varsa, araç pencerelerinin konumu değişebilir.
  • Varsayılan Visual Basic profilini kullanıyorsanız veya Araçlar>Seçenekleri>Projeleri ve Çözümleri'nde Oluşturulduğunda yeni projeleri kaydet seçeneğinin seçimi kaldırıldıysa, Visual Studio bir DPI farkında olmayan işlem olarak yeniden başlatıldığında projenizi yeniden açamaz. Ancak, Projeyi Dosya Son Projeler ve Çözümler'in altında> seçerek açabilirsiniz.

Not

  • DPI'sız bir işlem olarak Visual Studio'yu yeniden başlatma seçeneğini belirledikten sonra araç pencerelerini çıkarırsanız, araç pencerelerinin konumu değişebilir.
  • Varsayılan Visual Basic profili, Visual Studio DPI farkında olmayan bir işlem olarak yeniden başlatıldığında projeleri yeniden açmaz. Bunun yerine Dosya Son Projeler ve Çözümler aracılığıyla >projenize erişin.

Görüntü ölçeklendirmenizi %100'e ayarlamak için Windows kullanma

Görüntü ölçeklendirmeyi değiştirmek için Visual Studio'yu kullanmaktan kaçınmak için Windows ayarlarında ölçeklendirmeyi ayarlayın. Örneğin, Windows 11'de ölçeklendirmeyi %100 (96 DPI) olarak ayarlayabilirsiniz.

Bunu yapmak için görev çubuğu arama kutusuna görüntü ayarları yazın ve görüntü ayarlarını değiştir'i seçin. Ayarlar penceresinde Metin, uygulama ve diğer öğelerin boyutunu %100 olarak değiştirin. %100 ölçeklendirmenin (96 DPI) kullanıcı arabirimini pratik kullanım için çok küçük hale getirebileceğini unutmayın.

DevEnv komut satırı aracını kullanarak ölçeklendirmeyi devre dışı bırakma

Görüntü ayarlarınızı kullanıcı arabirimi (kullanıcı arabirimi) araçları yerine komut satırı araçlarını kullanarak yönetmek için DevEnv.exe kullanın. Komut, devenv.exe %100 ölçeklendirme modunda çalıştırılacak bir komut satırı parametresi olarak alır /noscale . Bunu şu şekilde kullanabilirsiniz:

  1. Visual Studio menü çubuğunda Araçlar>Komut Satırı>Geliştirici Komut İstemi'ni seçin.
  2. Ardından girin devenv /noScale.

Diğer seçenekler

Yukarıda belirtilen seçeneklere ek olarak aşağıdaki seçenekleri de deneyebilirsiniz:

Sorun giderme

Visual Studio'da DPI tanıma geçişi çalışmazsa, değerin dpiAwareness Kayıt Defteri Düzenleyicisi'ndeki HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\devenv.exe alt anahtarında DEĞİlDİr olduğundan emin olun. Varsa değeri silin.