Pregunta

Siento que he leído una pregunta similar a esta, pero no puedo encontrarla, así que cierre si es duplicado.

Estoy tratando de dibujar texto con Graphics::DrawString con una fuente monoespacial (consolas). Sin embargo, cuando dibujo el texto, las letras no están espaciadas uniformemente. Así es como se ve:

enter image description here

Como puede ver, las letras se agrupan en grupos de dos y tres. Yo leo Este artículo y pensé que había tomado medidas adecuadas para evitarlo usando StringFormat::GenericTypographic, pero aparentemente no. Yo también estoy usando TextRenderingHintClearTypeGridFit Porque todos los demás parecen basura (y no hay TextRenderingHintClearType sin el GridFit parte).

¿Cómo puedo dibujar texto como todos los otros programas que dibujan texto con una fuente monoespacial para que se vea bien?

¿Fue útil?

Solución

El problema es que GDI+ usa un sistema diferente (y hace mucho tiempo abandonado) para dibujar texto. Comenzando con .NET Framework 2.0, Microsoft cambió todos los controles para usar GDI para la representación de texto, en lugar de GDI+. La representación de texto en GDI se acelera el hardware y continuó obteniendo mejoras con la representación de personajes, la unión, las ligaduras. La representación de texto en GDI+ no se acelera el hardware, y no obtiene correcciones o mejoras.

GDI también puede dibujar anti-alias, usar ClearType_Quality o Antialiased_Quality.

Aquí hay una comparación de

  • GDI+ (Graphics.DrawString)
  • GDI (TextRenderer.DrawText)

enter image description here

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top