Share via


Otomatik ölçeklendirme (Windows Forms .NET)

Otomatik ölçeklendirme, belirli bir görüntü çözünürlüğüne veya yazı tipine sahip bir makinede tasarlanan formun ve denetimlerinin farklı bir görüntü çözünürlüğüne veya yazı tipine sahip başka bir makinede uygun şekilde görüntülenmesini sağlar. Formun ve denetimlerinin, hem kullanıcıların hem de diğer geliştiricilerin makinelerindeki yerel pencereler ve diğer uygulamalarla tutarlı olacak şekilde akıllı bir şekilde yeniden boyutlandırılacağını garanti eder. Otomatik ölçeklendirme ve görsel stiller, Windows Forms uygulamalarının her kullanıcının makinesindeki yerel Windows uygulamalarıyla karşılaştırıldığında tutarlı bir görünüm ve görünüm korumasına olanak tanır.

Çoğunlukla, otomatik ölçeklendirme Windows Forms'da beklendiği gibi çalışır. Ancak yazı tipi düzeni değişiklikleri sorunlu olabilir.

Önemli

.NET 7 ve .NET 6 için Masaüstü Kılavuzu belgeleri yapım aşamasındadır.

Otomatik ölçeklendirme gerekiyor

Otomatik ölçeklendirme olmadan, bir görüntü çözünürlüğü veya yazı tipi için tasarlanmış bir uygulama, çözünürlük veya yazı tipi değiştirildiğinde çok küçük veya çok büyük görünür. Örneğin, uygulama temel olarak Tahoma 9 noktası kullanılarak tasarlandıysa, sistem yazı tipinin Tahoma 12 punto olduğu bir makinede çalıştırıldığında ayarlama yapılmadan çok küçük görünür. Başlıklar, menüler, metin kutusu içeriği gibi metin öğeleri diğer uygulamalardan daha küçük işlenir. Ayrıca, başlık çubuğu, menüler ve birçok denetim gibi metin içeren kullanıcı arabirimi (UI) öğelerinin boyutu kullanılan yazı tipine bağlıdır. Bu örnekte, bu öğeler nispeten daha küçük görünecektir.

Bir uygulama belirli bir ekran çözünürlüğü için tasarlandığında benzer bir durum oluşur. En yaygın görüntü çözünürlüğü inç başına 96 noktadır (DPI), bu da %100 ekran ölçeklendirmesine eşittir, ancak %125, %150, %200 'ü destekleyen daha yüksek çözünürlüklü görüntüler (sırasıyla 120, 144 ve 192 DPI'ye eşittir) ve üzeri daha yaygın hale gelmektedir. Ayarlama yapılmadan, özellikle grafik tabanlı bir çözünürlük için tasarlanmış bir uygulama, başka bir çözünürlükte çalıştırıldığında çok büyük veya çok küçük görünür.

Otomatik ölçeklendirme, formu ve alt denetimlerini göreli yazı tipi boyutuna veya görüntü çözünürlüğüne göre otomatik olarak yeniden boyutlandırarak bu sorunları gidermeyi arar. Windows işletim sistemi, iletişim birimleri adı verilen göreli bir ölçü birimi kullanarak iletişim kutularının otomatik olarak ölçeklendirilebilirliğini destekler. Bir iletişim kutusu birimi sistem yazı tipini temel alır ve Win32 SDK işlevi GetDialogBaseUnitsolsa da pikselle ilişkisi belirlenebilir. Kullanıcı Windows tarafından kullanılan temayı değiştirdiğinde, tüm iletişim kutuları buna göre otomatik olarak ayarlanır. Ayrıca, Windows Forms varsayılan sistem yazı tipine veya görüntü çözünürlüğüne göre otomatik ölçeklendirmeyi destekler. İsteğe bağlı olarak, bir uygulamada otomatik ölçeklendirme devre dışı bırakılabilir.

Dikkat

DPI ve yazı tipi ölçeklendirme modlarının rastgele karışımları desteklenmez. Kullanıcı denetimini bir modu (örneğin DPI) kullanarak ölçeklendirebilir ve sorun olmadan başka bir mod (Yazı Tipi) kullanarak bir forma yerleştirebilirsiniz, ancak temel formu bir modda ve türetilmiş bir formu başka bir modda karıştırmak beklenmeyen sonuçlara yol açabilir.

Otomatik ölçeklendirme işlemi

Windows Forms, formları ve bunların içeriğini otomatik olarak ölçeklendirmek için aşağıdaki mantığı kullanır:

  1. Tasarım zamanında her ContainerControl biri ölçeklendirme modunu ve geçerli çözünürlüğü sırasıyla ve AutoScaleDimensionsiçinde AutoScaleMode kaydeder.

  2. Çalışma zamanında gerçek çözüm özelliğinde CurrentAutoScaleDimensions depolanır. özelliği, AutoScaleFactor çalışma zamanı ile tasarım zamanı ölçeklendirme çözünürlüğü arasındaki oranı dinamik olarak hesaplar.

  3. Form yüklendiğinde ve AutoScaleDimensions değerleri CurrentAutoScaleDimensions farklıysa, PerformAutoScale denetimi ve alt öğelerini ölçeklendirmek için yöntemi çağrılır. Bu yöntem düzeni askıya alır ve gerçek ölçeklendirmeyi gerçekleştirmek için yöntemini çağırır Scale . Daha sonra, aşamalı ölçeklendirmeyi önlemek için değeri AutoScaleDimensions güncelleştirilir.

  4. PerformAutoScale aşağıdaki durumlarda da otomatik olarak çağrılır:

    • Ölçeklendirme modu ise Fontolaya yanıt olarakOnFontChanged.

    • Kapsayıcı denetiminin düzeni devam ettiğinde ve veya AutoScaleMode özelliklerinde AutoScaleDimensions bir değişiklik algılandığında.

    • Yukarıda da belirtildiği gibi, üst öğe ContainerControl ölçeklendirilirken. Her kapsayıcı denetimi, alt öğelerini üst kapsayıcısından değil kendi ölçeklendirme faktörlerini kullanarak ölçeklendirmekten sorumludur.

  5. Alt denetimler ölçeklendirme davranışlarını çeşitli yollarla değiştirebilir:

    • Özellik ScaleChildren , alt denetimlerinin ölçeklendirilip ölçeklendirilmemesi gerektiğini belirlemek için geçersiz kılınabilir.

    • Denetimin GetScaledBounds ölçeklendirildiği sınırları ayarlamak için yöntemi geçersiz kılınabilir, ancak ölçeklendirme mantığını ayarlanamaz.

    • Geçerli ScaleControl denetimin ölçeklendirme mantığını değiştirmek için yöntemi geçersiz kılınabilir.

Ayrıca bkz.