Aracılığıyla paylaş


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.

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 uygulamalara göre daha küçük görünür. 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 nokta (DPI) ve 100% ekran ölçeklendirmesine eşittir, ancak daha yüksek çözünürlüklü ekranlar 125%, 150%, 200% (sırasıyla 120, 144 ve 192 DPI'ye eşittir) ve üzerini destekleyen görüntüler 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ı tipine dayanır ve piksellerle ilişkisi Win32 SDK işlevi GetDialogBaseUnitsaracılığıyla 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 ölçeklendirme modunu ve geçerli çözünürlüğü sırasıyla AutoScaleMode ve AutoScaleDimensionskaydeder.

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

  3. Form yüklendiğinde, CurrentAutoScaleDimensions ve AutoScaleDimensions değerleri farklıysa, denetimi ve alt öğelerini ölçeklendirmek için PerformAutoScale 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 Scale yöntemini çağırır. Daha sonra, aşamalı ölçeklendirmeyi önlemek için AutoScaleDimensions değeri güncelleştirilir.

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

    • Ölçeklendirme modu Fontise OnFontChanged olayına yanıt olarak.

    • Kapsayıcı denetimin düzeni yeniden başladığında ve AutoScaleDimensions veya AutoScaleMode özelliklerinde bir değişiklik algılandığında.

    • Yukarıda da belirtildiği gibi, bir üst ContainerControl ölçeklendirildiğinde. 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:

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

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

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

Ayrıca bkz.