Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Penskalakan otomatis memungkinkan formulir dan kontrolnya, yang dirancang pada satu komputer dengan resolusi tampilan atau font tertentu, untuk ditampilkan dengan tepat pada komputer lain dengan resolusi tampilan atau font yang berbeda. Ini memastikan bahwa formulir dan kontrolnya akan secara cerdas mengubah ukuran agar konsisten dengan jendela asli dan aplikasi lain pada mesin pengguna dan pengembang lainnya. Penskalakan otomatis dan gaya visual memungkinkan aplikasi Windows Forms mempertahankan tampilan dan nuansa yang konsisten jika dibandingkan dengan aplikasi Windows asli pada komputer setiap pengguna.
Sebagian besar, penskalaan otomatis berfungsi seperti yang diharapkan dalam Formulir Windows. Namun, perubahan skema font bisa bermasalah. Untuk contoh cara mengatasinya, lihat Cara: Merespons Perubahan Skema Font dalam Aplikasi Formulir Windows.
Kebutuhan akan penskalaan otomatis
Tanpa penskalaan otomatis, aplikasi yang dirancang untuk satu resolusi tampilan atau font akan muncul terlalu kecil atau terlalu besar ketika resolusi atau font tersebut diubah. Misalnya, jika aplikasi dirancang menggunakan titik Tahoma 9 sebagai garis besar, tanpa penyesuaian itu akan tampak terlalu kecil jika dijalankan pada mesin di mana font sistem adalah Tahoma 12 titik. Elemen teks, seperti judul, menu, konten kotak teks, dan sebagainya akan tampil lebih kecil dibandingkan dengan aplikasi lain. Selain itu, ukuran elemen antarmuka pengguna (UI) yang berisi teks, seperti bilah judul, menu, dan banyak kontrol bergantung pada font yang digunakan. Dalam contoh ini, elemen-elemen ini juga akan tampak relatif lebih kecil.
Situasi analog terjadi ketika aplikasi dirancang untuk resolusi tampilan tertentu. Resolusi tampilan yang paling umum adalah 96 titik per inci (DPI), yang sama dengan penskalaan tampilan 100%, tetapi resolusi yang lebih tinggi menampilkan dukungan 125%, 150%, 200% (yang masing-masing sama dengan 120, 144 dan 192 DPI) dan di atasnya menjadi lebih umum. Tanpa penyesuaian, aplikasi, terutama yang berbasis grafis, yang dirancang untuk satu resolusi akan muncul terlalu besar atau terlalu kecil saat dijalankan pada resolusi lain.
Pengaturan skala otomatis berupaya memecahkan masalah ini dengan mengubah ukuran formulir dan kontrol anaknya secara otomatis berdasarkan ukuran huruf relatif atau resolusi tampilan. Sistem operasi Windows mendukung penskalaan otomatis kotak dialog menggunakan unit pengukuran relatif yang disebut unit dialog. Unit dialog didasarkan pada font sistem dan hubungannya dengan piksel dapat ditentukan melalui fungsi GetDialogBaseUnitsWin32 SDK . Ketika pengguna mengubah tema yang digunakan oleh Windows, semua kotak dialog secara otomatis disesuaikan. Selain itu, Windows Forms mendukung penskalakan otomatis baik sesuai dengan font sistem default atau resolusi tampilan. Secara opsional, penskalakan otomatis dapat dinonaktifkan dalam aplikasi.
Perhatian
Kombinasi sewenang-wenang dari mode DPI dan penskalaan font tidak didukung. Meskipun Anda dapat menskalakan kontrol pengguna menggunakan satu mode (misalnya, DPI) dan menempatkannya di formulir menggunakan mode lain (Font) tanpa masalah, tetapi mencampur formulir dasar dalam satu mode dan formulir turunan di mode lain dapat menyebabkan hasil yang tidak terduga.
Penskalakan otomatis dalam tindakan
Windows Forms menggunakan logika berikut untuk menskalakan formulir dan isinya secara otomatis:
Pada waktu desain, setiap ContainerControl merekam mode penskalaan dan resolusi saat ini dalam AutoScaleMode dan AutoScaleDimensions, masing-masing.
Pada waktu proses, resolusi aktual disimpan di properti CurrentAutoScaleDimensions. Properti AutoScaleFactor menghitung rasio secara dinamis antara resolusi penskalaan pada waktu proses dan waktu desain.
Ketika formulir dimuat, jika nilai CurrentAutoScaleDimensions dan AutoScaleDimensions berbeda, maka metode PerformAutoScale dipanggil untuk menskalakan kontrol dan anak-anaknya. Metode ini menangguhkan tata letak dan memanggil metode Scale untuk melakukan penskalakan aktual. Setelah itu, nilai AutoScaleDimensions diperbarui untuk menghindari penskalaan progresif.
PerformAutoScale juga secara otomatis dipanggil dalam situasi berikut:
Menanggapi pada peristiwa OnFontChanged jika mode penskalakan adalah Font.
Ketika tata letak kontrol kontainer dilanjutkan dan perubahan terdeteksi di properti AutoScaleDimensions atau AutoScaleMode.
Seperti yang tersirat di atas, ketika ContainerControl induk diubah skalanya. Setiap kontrol kontainer bertanggung jawab untuk menskalakan anak-anaknya menggunakan faktor penskalaannya sendiri dan bukan dari kontainer induknya.
Kontrol anak dapat mengubah perilaku penskalakan mereka melalui beberapa cara:
Properti ScaleChildren dapat ditimpa untuk menentukan apakah kontrol anak mereka harus diskalakan atau tidak.
Metode GetScaledBounds dapat diganti untuk menyesuaikan batas yang digunakan untuk penskalaan kontrol, tetapi bukan logika penskalaan.
Metode ScaleControl dapat dioverride untuk mengubah logika penskalaan kontrol saat ini.
Lihat juga
.NET Desktop feedback