2008-08-22 9 views
10

Antialiasing cannot be turned off en WPF. Pero quiero eliminar la apariencia borrosa de las fuentes WPF cuando son pequeñas.WPF Solución antialiasing

Una posibilidad sería utilizar un componente .net 2.0. Parece que perdería la capacidad de transparencia y el soporte de Blend. Nunca lo intenté sin embargo.

¿Alguien tiene una solución para esto? ¿Alguna desventaja de esto?

Gracias

Respuesta

3

¿Usted ha intentado poner un control WindowsFormsHost en una ventana/control de WPF? Eso permitirá a WPF renderizar un control WinForms.

ACTUALIZACIÓN Noviembre 2012: Esta pregunta y respuesta tiene 4 años. Text rendering has since improved in WPF. No coloque controles WinForms en aplicaciones WPF; esa fue una manera de hackear para arreglar el renderizado de fuentes. Ya no es necesario.

+7

Esta respuesta dice mucho sobre el estado actual de WPF. Esperemos que mejore en VS2010. ;) –

+0

wtf, eso es overkill – paIncrease

+1

Sí, lo es, pero esta pregunta tiene más de 4 años. Las cosas han mejorado desde entonces, en particular la representación de fuentes WPF: http://blogs.msdn.com/b/text/archive/2009/08/24/wpf-4-0-text-stack-improvements.aspx –

-3

Intente utilizar la propiedad UIElement.SnapsToDevicePixels en los elementos de la interfaz de usuario de su ventana. La gente tiende a informar que funciona mejor para graphics and lines, pero también he notado mejoras en la representación de texto.

+1

Si se hace una comparación directa entre dos piezas de texto idénticas y no se pudo encontrar ninguna diferencia en la configuración de SnapsToDevicePixel. Además, a juzgar por las razones técnicas detrás de la "borrosidad", no puedo imaginar cómo eso podría ayudar. –

1

SnapsToDevicePixels no tiene ningún efecto en la representación de texto.

0

Compense los objetos que dibuja, que no desea ser antialias, por 0.5px. Esto provocará que el motor de dibujo dibuje en los píxeles reales, en lugar del dibujo en el borde de los píxeles (que es el valor predeterminado). Cuando se dibuja en el borde de un píxel, el antialiasing normalmente ocurre en los píxeles circundantes.

Esto es similar al dibujo de Cuartos en Mac.

Editar: Lo siento, no leí la pregunta. Esto no funciona para fuentes, solo para formas. Aunque dejaré el comentario aquí para referencia.

1

Microsoft tienen un blog dedicado a la representación de texto en WPF aquí WPF Text Blog

cosas definitivamente han mejorado en .NET 4.0.

9

Suavizado se puede apagar a partir de WPF 4.0 con opción siguiente:

TextOptions.TextFormattingMode="Display" 
+1

Eso no es Anti-Aliasing desactivado. Es una versión diferente y más clara de la configuración Anti-Aliasing. La opción Aliased es TextOptions.TextRenderingMode = "Aliased" –

Cuestiones relacionadas