Masalah dijelaskan dan ditunjukkan pada tautan berikut:
- Paul Stovell WPF: Rendering Teks Buram
- forum www.gamedev.net
- Microsoft Connect: renderer teks WPF menghasilkan teks yang sangat kabur pada ukuran font kecil
Penjelasan: Kejelasan Teks dalam WPF . Tautan ini memiliki perbandingan font.
Saya ingin mengumpulkan semua kemungkinan solusi untuk masalah ini. Microsoft Expression Blend menggunakan WPF tetapi font terlihat dapat dibaca.
- Latar belakang gelap seperti dalam Microsoft Expression Blend
- Meningkatkan ukuran font dan mengubah font (Calibri ...) [tautan]
- Sematkan formulir windows [tautan]
- Gunakan GDI + dan / atau kelas Windows Forms TextRenderer untuk merender teks ke bitmap, dan kemudian render bitmap itu sebagai kontrol WPF. [tautan]
Apakah ada solusi lain?
Ini akan diperbaiki dalam VS2010 (dan WPF4) beta 2
ITU TERLIHAT SEPERTI ITU AKHIRNYA DIPENUHI!
Scott Hanselman ComputerZen.com: WPF dan Text Blurriness, sekarang dengan kejelasan lengkap
Jawaban:
Latar belakang teknis
Ada artikel mendalam tentang rendering Teks WPF dari salah satu Manajer Program Teks WPF di windowsclient.net: Kejelasan Teks dalam WPF .
Masalahnya bermuara pada WPF membutuhkan font-renderer penskalaan linear untuk animasi yang halus. Pure ClearType di sisi lain membutuhkan sedikit kebebasan dengan font untuk mendorong batang vertikal ke piksel berikutnya.
Perbedaannya jelas jika seseorang membandingkan pola "kaskade" klasik. WinForms di sisi kiri bawah, WPF di sisi kanan atas:
Sementara saya bukan penggemar font rendering font WPF juga, saya bisa membayangkan keributan jika animasi akan melompat seperti yang mereka lakukan di kaskade Winforms.
Bermain dengan registri
Yang menarik bagi saya adalah tautan ke artikel MSDN " ClearType Registry Settings ", yang menjelaskan kemungkinan penyesuaian sisi pengguna dalam registri:
Bermain-main dengan pengaturan ini tidak benar-benar memperbaiki masalah yang mendasarinya, tetapi dapat membantu dengan mengurangi efek pendarahan warna untuk pengguna yang sensitif.
Pendekatan lain
Saran terbaik yang diberikan artikel Teks Kejelasan adalah meningkatkan ukuran font dan mengubah font. Calibri bekerja untuk saya lebih baik daripada Segoe UI standar. Karena popularitasnya sebagai font web, saya mencoba Verdana juga, tetapi memiliki lompatan berat antara 14pt dan 15pt yang sangat terlihat ketika menggerakkan ukuran font.
WPF 4.0
WPF 4 akan memiliki dukungan yang lebih baik untuk mempengaruhi rendering font. Ada artikel di Blog Teks WPF yang menjelaskan perubahan. Yang paling menonjol, sekarang ada (setidaknya) tiga jenis rendering teks:
<grumble> Itu seharusnya cukup menjadi tali untuk setiap desainer. </grumble>
sumber
.NET 4 akhirnya memiliki solusi untuk kualitas rendering teks WPF yang buruk, tetapi disembunyikan dengan baik. Tetapkan yang berikut untuk setiap jendela:
Nilai default adalah "Ideal" yang sama sekali tidak sesuai dengan namanya.
Ada dua opsi lain di TextOptions, yaitu TextHintingMode dan TextRenderingMode, tetapi keduanya memiliki default yang masuk akal.
sumber
Saya mengalami masalah tempo hari ketika saya menggunakan perbatasan yang menerapkan DropShadowEffect . Hasilnya adalah semua teks di dalam perbatasan itu sangat buram. Tidak masalah apakah teks ada di dalam panel lain atau langsung di bawah perbatasan - blok teks apa pun yang merupakan induk dari orang tua yang memiliki Efek yang diterapkan tampaknya akan terpengaruh.
Solusi untuk kasus khusus ini adalah untuk tidak meletakkan barang-barang di dalam perbatasan yang memiliki efek, tetapi sebaliknya menggunakan kotak (atau apa pun yang mendukung menempatkan konten di atas satu sama lain) dan menempatkan persegi panjang di sel yang sama dengan teks (yaitu sebagai saudara di pohon visual) dan memberikan efek pada itu.
Seperti itu:
sumber
Ini akan diperbaiki dalam VS2010 (dan WPF4) beta 2:
sumber
SnapToDevicePixels hanya berlaku untuk bentuk WPF (baris dll.), Bukan untuk renderer teks.
Tidak ada solusi yang diketahui untuk masalah ini. Menurut Microsoft, perilakunya adalah "sesuai desain".
Lihat juga utas ini di forum Microsoft yang membahas masalah - ada beberapa balasan dari MS yang menjelaskan posisi mereka dalam masalah ini.
sumber
Dari sudut pandang pengembang, satu-satunya "solusi" yang dikenal hingga saat ini adalah menggunakan kelas GDI + dan / atau Windows Forms TextRenderer untuk merender teks menjadi bitmap, dan kemudian merender bitmap itu sebagai kontrol WPF. Selain implikasi kinerja yang jelas, ini tidak mengurangi masalah untuk aplikasi yang ada.
Saya sekarang telah membuat tiket Microsoft Connect untuk masalah ini (yang mengejutkan saya, terlepas dari semua hal negatifnya, tidak ada laporan bug aktual di pelacak yang ditunjuk).
Karena itu adalah salah satu saluran resmi untuk mengkomunikasikan permintaan dan pertanyaan ke Microsoft, saya juga menyarankan untuk melewatinya untuk jawaban yang lebih cepat. Paling tidak, jika Anda ingin masalah ini diatasi dengan satu atau lain cara, memilih tiket itu di sana dan / atau memvalidasi masalah akan membantu menarik perhatian PM dan insinyur Microsoft terhadap masalah ini, dan mungkin meningkatkan prioritas yang dirasakan.
sumber
Saya tidak melihatnya sebagai bug, tetapi konfigurasi defaultnya memang sangat mengganggu. Berikut ini adalah perbandingan dari semua kombinasi
SnapToDevicePixels
tidak membuat perbedaan dalam rendering teks.Saya lebih memilih:
di mana garis vertikal tidak pernah buram.
Font yang digunakan adalah Open Sans Light, yang dapat benar-benar indah jika digunakan dengan baik, seperti di TeamViewer terbaru.
Bagi mereka yang menggunakan Mahapps.Metro, masalahnya adalah
TransitioningContentControl
https://github.com/MahApps/MahApps.Metro/issues/889sumber
Baru saja mencoba VS2010 beta, yang semuanya dilakukan dalam WPF, dan menderita BADLY dari masalah font-blur. Terutama pada tooltips.
Itu tampaknya memberikan beberapa bukti bahwa WPF4 pada kenyataannya tidak akan menyelesaikan masalah (jika terlihat lebih buruk)
sumber
Wow, saya tidak percaya akhirnya font WPF saya bisa dibaca. Dan saya juga tidak percaya tidak ada dialog opsi untuk membuat perubahan ini mudah sementara nilai defaultnya mengerikan pada tampilan saya.
Pengaturan registri ini (dalam desimal) bekerja untuk saya dan menjadi yang paling dekat dengan font jenis penulisan biasa:
sumber
Mereka mengatakan "SnapToDevicePixels = true" berfungsi, tetapi saya belum pernah melihat hasil yang baik.
Saya memerangi teks kabur dengan beralih ke font lain.
Jelas ini bukan solusi untuk masalah ini, namun inilah cara saya mengatasinya.
sumber
Jika Anda lebih suka menggunakan kelas dasar C # untuk mengkustomisasi windows untuk aplikasi Anda (atau sekarang punya alasan untuk), inilah cara Anda mengatur dapat mengatur pemformatan teks untuk menggunakan mode Tampilan yang menarik:
sumber