2010-07-13 13 views
5

System.Drawing.Graphics sınıfını ve DrawString() yöntemini kullanarak bir görüntü üzerine metin yapıyorum.Kerning'i System.Drawing.Graphics.DrawString() 'de değiştirme

Bu görüntü için metni çok özel bir şekilde oluşturmam gerekiyor, böylece tam olarak - piksel için piksel - mevcut bir resimle eşleşiyor.

Sorun, DrawString() tarafından oluşturulan metnin mevcut resimdeki metne farklı bir karakter aralığı içermesidir (en iyi tahminim, her harf için yaklaşık 0,5 - 1 pikseldir).

Bu ad alanını ve yöntemini kullanırken karakter aralığını değiştirmek mümkün olup olmadığını bana söyleyebilir mi?

Ayrıca, kullandığımız özel bir yazı tipi ve bunu açık türden (kullanılan kaynak görüntü) doğru türden dönüştürmek zorunda kaldık. Bu aşamada karakter aralığı değiştirilebiliyor mu? daha doğru - - ama çoğu zaman yol ile uyumsuz bir şekilde uygulama geliştiricilerin bu işlevleri kullanmak istiyorum

cevap

3

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

bu sorun o metin karakter aralığı farklı bir şekilde ölçülebilir olmasıdır.

çözüm:

ExtTextOut karakter aralığı bu tür yapacak kadar zeki değildi, bu yüzden bu sorun yok. Ne yazık ki, .NET framework'ün geri çekebileceğiniz herhangi bir metin çizim fonksiyonu yoktur, dolayısıyla eski davranışı elde etmenin tek yolu GDI'daki ExtTextOut işlevine P/Invoke yöntemidir.

Bağlantıda bazı örnek kodlar var .. umarım yardımcı olur!