2010-07-13 28 views
5

Estoy renderizando texto en una imagen usando la clase System.Drawing.Graphics y el método DrawString().Modificar el kerning en System.Drawing.Graphics.DrawString()

Necesito generar el texto para esta imagen de una manera muy específica para que exactamente - píxel por píxel - coincida con una imagen existente.

El problema es que el texto generado por DrawString() tiene un interletraje diferente al texto en la imagen existente (mi mejor estimación es aproximadamente 0.5 - 1 píxel por letra).

¿Alguien puede decirme si es posible modificar el interletraje mientras usa este espacio de nombres y método?

Además, es una fuente personalizada que estamos usando y tuvimos que convertir esto de tipo abierto (que es la imagen de origen utilizada) al tipo verdadero. ¿Se podría haber modificado el interletraje en esta etapa?

Respuesta

3

http://blog.stevex.net/rendering-text-using-the-net-framework/

El problema con ellos es que el ajuste entre caracteres de texto se mide de manera diferente - con más precisión - pero de una manera que es a menudo incompatible con la forma en los desarrolladores de aplicaciones desea utilizar estas funciones.

La solución:

ExtTextOut no era lo suficientemente inteligente como para hacer este tipo de perfil fuera de línea, por lo que no tienen este problema. Lamentablemente, el .NET Framework no tiene ninguna función de dibujo de texto en la que pueda recurrir, por lo que la única forma de obtener el comportamiento anterior es a través de P/Invoke a la función ExtTextOut en GDI.

El enlace tiene un código de ejemplo ... espero que ayude!

Cuestiones relacionadas