2010-07-13 3 views
5

Je rends le texte sur une image à l'aide de la classe System.Drawing.Graphics et de la méthode DrawString().Modification du crénage dans System.Drawing.Graphics.DrawString()

J'ai besoin de générer le texte pour cette image d'une manière très spécifique afin que ce soit exactement - pixel pour pixel - correspond à une image existante.

Le problème est que le texte généré par DrawString() a un crénage différent du texte de l'image existante (ma meilleure estimation est d'environ 0,5 à 1 pixel par lettre).

Quelqu'un peut-il me dire s'il est possible de modifier le crénage en utilisant cet espace de noms et cette méthode?

De plus, c'est une police personnalisée que nous utilisons et nous avons dû la convertir de type ouvert (que l'image source utilisée) en vrai. Le crénage aurait-il été modifié à ce stade?

Répondre

3

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

Le problème avec ces derniers est que le texte crénage est mesurée différemment - plus précisément - mais d'une manière qui est souvent incompatible avec les développeurs d'applications façon veulent utiliser ces fonctions.

La solution:

ExtTextOut était pas assez intelligent pour faire ce genre de crénage, de sorte que vous n'avez pas ce problème. Malheureusement, le framework .NET n'a pas de fonction de dessin de texte sur laquelle vous pouvez vous appuyer, donc la seule façon d'obtenir l'ancien comportement est de passer de P/Invoke à la fonction ExtTextOut dans GDI.

Le lien a un exemple de code .. espérons que cela aide!

Questions connexes