El problema se describe y se demuestra en los siguientes enlaces:
- Paul Stovell WPF: Renderizado de texto borroso
- Foro www.gamedev.net
- Microsoft Connect: el procesador de texto WPF produce texto muy borroso en tamaños de fuente pequeños
Explicación: Claridad del texto en WPF . Este enlace tiene comparación de fuentes.
Me gustaría recopilar todas las soluciones posibles para este problema. Microsoft Expression Blend usa WPF pero las fuentes parecen legibles.
- Fondo oscuro como en Microsoft Expression Blend
- Aumentar el tamaño de fuente y cambiar la fuente (Calibri ...) [enlace]
- Incrustar formularios de Windows [enlace]
- Utilice GDI + y / o la clase TextRenderer de Windows Forms para representar el texto en un mapa de bits y luego renderice ese mapa de bits como un control WPF. [enlace]
¿Hay más soluciones?
Esto se solucionará en VS2010 (y WPF4) beta 2
¡PARECE QUE SE HA RESUELTO FINALMENTE!
ComputerZen.com de Scott Hanselman: WPF y borrosidad del texto, ahora con total claridad
Respuestas:
Experiencia técnica
Hay un artículo detallado sobre la representación de texto de WPF de uno de los administradores de programas de texto de WPF en windowsclient.net: Claridad de texto en WPF .
El problema se reduce a WPF que necesita un renderizador de fuentes de escala lineal para animaciones fluidas. Pure ClearType, por otro lado, requiere bastante libertad con la fuente para empujar los tallos verticales al siguiente píxel.
La diferencia es obvia si uno compara el patrón clásico de "cascada". WinForms en la parte inferior izquierda, WPF en la parte superior derecha:
Si bien tampoco soy fanático de las idiosincrasias de representación de fuentes de WPF, puedo imaginar el clamor si las animaciones saltaran como lo hacen en la cascada Winforms.
Jugando con el registro
De especial interés para mí fue el enlace al artículo de MSDN " Configuración de registro ClearType ", que explica los posibles ajustes del lado del usuario en el registro:
Jugar con estas configuraciones realmente no mejoró el problema subyacente, pero puede ayudar al reducir el efecto de sangrado del color para usuarios sensibles.
Otro enfoque
El mejor consejo que dio el artículo de Text Clarity fue aumentar el tamaño de la fuente y cambiarla. Calibri funciona para mí mejor que la interfaz de usuario estándar de Segoe. Debido a su popularidad como fuente web, también probé Verdana, pero tiene un salto de peso desagradable entre 14pt y 15pt, que es muy visible al animar el tamaño de fuente.
WPF 4.0
WPF 4 tendrá un soporte mejorado para influir en la representación de las fuentes. Hay un artículo en el blog de texto de WPF que explica los cambios. Lo más destacado, ahora hay (al menos) tres tipos diferentes de representación de texto:
<grumble> Eso debería ser suficiente cuerda para cada diseñador. </grumble>
fuente
.NET 4 finalmente tiene una solución para la pobre calidad de representación de texto de WPF, pero está bien oculto. Establezca lo siguiente para cada ventana:
El valor predeterminado es "Ideal", que no es lo que implica el nombre.
Hay otras dos opciones en TextOptions, a saber, TextHintingMode y TextRenderingMode, pero ambas tienen valores predeterminados razonables.
fuente
Me encontré con un problema el otro día cuando utilicé un borde que tenía un efecto DropShadowEffect aplicado. El resultado fue que todo el texto dentro de ese borde era extremadamente borroso. No importa si el texto estaba dentro de otros paneles o directamente debajo del borde: cualquier bloque de texto que sea hijo del padre y que tenga un efecto aplicado parece verse afectado.
La solución a este caso particular fue no poner cosas dentro del borde que tengan efectos, sino usar una cuadrícula (o cualquier otra cosa que permita poner contenido uno encima del otro) y colocar un rectángulo en la misma celda que el texto (es decir como un hermano en el árbol visual) y poner los efectos en eso.
Al igual que:
fuente
Esto se solucionará en VS2010 (y WPF4) beta 2:
fuente
SnapToDevicePixels solo se aplica a formas WPF (líneas, etc.), no al renderizador de texto.
No hay una solución conocida para este problema. Según Microsoft, el comportamiento es "por diseño".
También vea este hilo en los foros de Microsoft que discute los problemas: ha recibido algunas respuestas de muchachos de MS que aclaran su posición sobre el tema.
fuente
Desde el punto de vista de un desarrollador, la única "solución" conocida hasta la fecha es usar GDI + y / o la clase TextRenderer de Windows Forms para representar el texto en un mapa de bits y luego representar ese mapa de bits como un control WPF. Aparte de las obvias implicaciones de rendimiento, esto no alivia el problema para las aplicaciones existentes.
Ahora he creado un ticket de Microsoft Connect para este problema (para mi sorpresa, a pesar de toda la negatividad, no hubo un informe de error real en el rastreador designado).
Dado que ese es uno de los canales oficiales para comunicar solicitudes y preguntas a Microsoft, también recomendaría que lo revise para obtener una respuesta más rápida. Al menos, si desea que el problema se aborde de una forma u otra, votar por ese ticket allí y / o validar el problema ayudará a llamar la atención de los PM e ingenieros de Microsoft sobre este problema, y posiblemente elevará su prioridad percibida.
fuente
No lo veo como un error, pero la configuración predeterminada es realmente muy molesta. Aquí hay una comparación de todas las combinaciones de
SnapToDevicePixels
no hace ninguna diferencia en la representación de texto.Yo prefiero:
donde las líneas verticales nunca son borrosas.
La fuente utilizada es Open Sans Light, que puede ser realmente hermosa si se usa bien, como en el último TeamViewer.
Para aquellos que usan Mahapps.Metro, el problema es
TransitioningContentControl
https://github.com/MahApps/MahApps.Metro/issues/889fuente
Acabo de probar VS2010 beta, que se hace todo en WPF, y sufre MALO por el problema de la fuente borrosa. Particularmente en la información sobre herramientas.
Eso parece dar alguna evidencia de que WPF4 de hecho no resolverá el problema (en todo caso, se ve peor)
fuente
Wow, no puedo creer que finalmente haya podido leer mis fuentes WPF. Y tampoco puedo creer que no haya un cuadro de diálogo de opción para facilitar estos cambios, mientras que los valores predeterminados son horribles en mi pantalla.
Esta configuración de registro (en decimal) funcionó para mí y se acerca más a mi fuente normal de cleartype:
fuente
Dicen que "SnapToDevicePixels = true" funciona, pero nunca he visto ningún buen resultado.
Combato el texto borroso cambiando a una fuente diferente.
Obviamente, esta no es una solución al problema, sin embargo, así es como he trabajado para solucionarlo.
fuente
Si prefiere usar una clase base de C # para personalizar ventanas para su aplicación (o ahora tiene una razón para hacerlo), así es como puede configurar el formato de texto para usar el atractivo modo de visualización:
fuente