Bagikan melalui


Mode kontras tinggi

Platform

Klien - Windows 8
Server - Windows Server 2012

Deskripsi

Dalam sistem operasi Windows sebelumnya, mode kontras tinggi terbatas pada tema yang berjalan di bawah tema klasik, yang tidak ditata secara visual. Dalam Windows 8 dan Windows Server 2012, mode klasik telah dihapus dan diganti dengan tema kontras tinggi yang ditata secara visual. Salah satu manfaat utama bagi Anda dari perubahan ini adalah penghapusan jalur kode terpisah untuk aplikasi yang berjalan dalam mode klasik.

Pengembang masih perlu dididik dalam bagaimana mode kontras tinggi dapat memengaruhi aplikasi mereka dan cara mengembangkan aplikasi yang benar-benar agnostik gaya. Ini penting karena meskipun penggunaan atau asumsi warna tema yang salah dapat menyebabkan aplikasi bertingkah dengan benar di bawah gaya visual seperti Aero, aplikasi yang sama tersebut salah merespons di bawah kontras tinggi. Misalnya, di Aero, teks selalu hitam dan warna sorotan berwarna biru muda. Namun, dalam hitam kontras tinggi, warna sorotan adalah hitam. Jika Anda mengasumsikan teks hitam, seperti yang telah terjadi di banyak aplikasi dalam kotak sebelum Windows 8, dan menggunakan default sistem untuk menyoroti, pengguna akan melihat teks hitam di latar belakang hitam. Diperlukan dalam situasi ini untuk memahami cara menggunakan tema dan metrik sistem dengan benar sehingga aplikasi terlihat benar di seluruh gaya.

Manifestasi

  • Tema tidak diaktifkan di area klien aplikasi yang tidak berisi tag Windows 8 <didukungOS> dalam manifes aplikasi mereka. Oleh karena itu, aplikasi harus merender area klien, menggunakan jalur kode yang diperlukan untuk merender dalam mode kontras tinggi dari tema klasik.
  • Tema tidak diaktifkan di area non-klien dan klien aplikasi dalam tema kontras tinggi. Ini juga tidak diaktifkan di aplikasi yang tidak berisi tag Windows 8 <didukungOS> dalam manifes aplikasi mereka dan yang menggambar di area non-klien jendela menggunakan API DwnIsCompositionEnabled(). Seluruh aplikasi dirender dalam mode kontras tinggi dari tema klasik.
  • Aplikasi yang menambahkan dukungan untuk Windows 8 dalam manifesnya, tetapi tidak menggunakan gaya visual untuk penyajian, yaitu warna atau gambar hardcode di aplikasi mereka, mungkin tidak dirender dengan benar dalam tema kontras tinggi. Teks mungkin sulit dibaca atau gambar mungkin tidak muncul seperti yang seharusnya dalam mode kontras tinggi.

Mitigasi

Warna teks dalam tema kontras tinggi telah ditulis agar sesuai dengan panduan Aksesibilitas Microsoft. Kami mempertahankan rasio kontras tinggi 14:1 antara latar depan dan latar belakang. Jika warna yang diaktifkan secara default tidak cocok untuk pengguna akhir tertentu, warna tersebut dapat dengan mudah disesuaikan melalui pengaturan panel kontrol untuk 'Warna Jendela' dalam tema kontras tinggi tersebut.

Komponen UI ini dapat disesuaikan dalam tema kontras tinggi:

  • Warna latar belakang jendela
  • Warna teks
  • Warna hyperlink
  • Teks yang dinonaktifkan
  • Warna latar depan dan latar belakang teks yang dipilih
  • Judul jendela aktif warna latar depan dan latar belakang
  • Judul jendela tidak aktif warna latar depan dan latar belakang
  • Warna latar depan tombol dan latar belakang

Solusi

Jika perilaku tak terduga terlihat di aplikasi dalam tema kontras tinggi, salah satu solusi ini mungkin membantu:

  • Memanifestasikan aplikasi untuk Windows 8:

    Aplikasi yang tidak berisi tag Windows 8 <didukungOS> dalam manifes aplikasi akan membuat area kliennya dirender tanpa tema. Semua aplikasi dalam kotak harus berisi entri ini dalam manifes aplikasi. Tambahkan nilai GUID 4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38 untuk Windows 8.

  • Menggunakan gaya visual dengan UI yang digambar pemilik:

    Kontrol yang digambar pemilik harus mengikuti instruksi pada MSDN untuk merender bagian dan status kontrol dengan benar, termasuk teks. Pengembang tidak boleh mengandalkan warna teks atau latar belakang yang ditentukan dalam konteks perangkat untuk menggunakan metode non-UxTheme untuk penyajian. Jika tidak ada bagian tema untuk kontrol yang dimaksud, gunakan GetThemeSysColor dengan metrik yang sesuai dan gambar teks menggunakan metode GDI standar. Jika tidak ada panggilan UxTheme yang sesuai, gunakan metode GetSysColor untuk mendapatkan metrik yang sesuai.

  • Memilih warna teks:

    Jangan gunakan warna teks yang dikodekan secara permanen, bahkan jika diasumsikan terlihat baik-baik saja dalam semua skenario umum. Tema pengiriman dibuat dengan cara yang mendukung visibilitas tinggi dengan metrik terkait. Misalnya, COLOR_HIGHLIGHTTEXT dimaksudkan untuk digunakan dengan COLOR_HIGHLIGHT sebagai latar belakang dan COLOR_WINDOWTEXT dimaksudkan untuk digunakan dengan COLOR_WINDOW sebagai latar belakang. Jika ada pengecualian untuk asosiasi ini, bekerja dengan mereka di bagian tema dan definisi status itu sendiri dan bukan dalam kode. Saat merancang UI kontras tinggi, sangat penting bahwa UI menjadi agnostik dengan tema kontras tinggi yang saat ini diterapkan, karena pengguna kontras tinggi dapat menyesuaikan warna mereka.

  • Merespons Peristiwa WM_ThemeChange:

    Jika aplikasi Anda menyimpan warna yang diambil dari tema atau menerapkan warna dengan cara yang tidak standar, tambahkan handler pesan untuk WM_THEMECHANGE yang menghitung ulang nilai warna yang disimpan dan mengecat ulang UI.

  • Menulis aplikasi WWA kontras tinggi:

    Aplikasi web tidak memiliki akses ke API UxTheme, tetapi masih harus ditulis dengan metrik sistem saat ini sebagai dasar untuk UI. Ada beberapa sumber daya yang dapat dimanfaatkan pengembang WWA untuk memastikan aplikasi yang mematuhi kontras tinggi:

    • Spesifikasi W3C CSS Color menentukan sintaks untuk menggunakan metrik sistem alih-alih warna tertentu
    • Dukungan untuk kueri media kontras tinggi sedang ditambahkan ke Internet Explorer 10
    • WWAs dapat memanfaatkan metode IAccessibilityCapabilities::get_HighContrast() untuk memeriksa status kontras tinggi

    Aplikasi Windows Store tidak memiliki banyak masalah yang sama dengan bagian tema yang ada di Aplikasi Windows Klasik, tetapi Anda masih perlu memastikan kepatuhan kontras tinggi. Secara default, Internet Explorer mengabaikan gaya tertentu yang ditentukan pengguna dan menggantinya dengan nilai yang sesuai dengan kontras tinggi. Misalnya, properti CSS gambar latar belakang, latar belakang, dan warna diabaikan.

    Jika Anda tidak ingin Internet Explorer mengabaikan properti apa pun yang Anda tetapkan dan Anda telah memastikan bahwa UI mematuhi kontras tinggi, Anda dapat mengatur properti M3 CSS baru –ms-high-contrast: off pada elemen induk.

  • Menulis aplikasi Windows Store kontras tinggi:

    Aplikasi Windows Store harus menggunakan kelas SystemColors untuk menentukan pewarnaan elemen UI yang tepat, perlu diingat bahwa warna metrik sistem tertentu dirancang untuk digunakan bersamaan, seperti SystemColors.WindowColor dan SystemColors.WindowTextColor. Ini memfasilitasi pengalaman kontras tinggi yang unggul.

  • Mendeteksi kontras tinggi dengan benar di versi Windows sebelumnya:

    Aplikasi yang berjalan pada versi Windows sebelumnya tidak memiliki akses ke tema kontras tinggi baru meskipun manifes menentukan kompatibilitas dengan versi Windows yang dimaksud. Dengan demikian, mungkin perlu untuk menyisipkan jalur kode tambahan untuk menangani penyajian di lingkungan klasik yang digunakan di versi Windows sebelumnya. Kehadiran kontras tinggi dalam hal ini harus diperiksa dengan memanggil fungsi SystemParametersInfo dengan bendera SPI_GETHIGHCONTRAST. Ini adalah satu-satunya cara yang didukung untuk memeriksa keberadaan kontras tinggi.

Pengujian

Saat menguji aplikasi, pastikan aplikasi dirender dengan benar di semua tema dalam kotak yang disediakan oleh Windows 8: Aero, Basic, High Contrast 1, High Contrast 2, High Contrast Black, dan High Contrast White. Pastikan teks terlihat jelas dan mudah dibaca dalam tema kontras tinggi.

Sumber