2010-02-18 38 views
5

daha küçüktür.Yazı Nedense zamanki yazı

SizeF sz = g.MeasureString(Text, new Font(Font.FontFamily, (int)(Font.Size - (Font.Size/7)), Font.Style), new PointF(0, 0), StringFormat.GenericDefault); 

    this.Size = new Size((int)sz.Width, (int)sz.Height); 
    //These are not the same 
    fontpath.AddString(this.Text, this.Font.FontFamily,(int)this.Font.Style, this.Font.Size, new Point(0, 0),StringFormat.GenericDefault); 

Bunu neden yaptığını herkes biliyor mu? senin Font.Size birliğinin varsayarsak

cevap

19

Eğer emSize (karakteri sınırlayan em kare kutusunun yükseklik) için AddString geçirilen boyutunu dönüştürmek gerekir, Point olduğunu. `Font.SizeInPoints` olduğunda

float emSize = graphics.DpiY * font.Size/72; 
+1

Neden nokta birimi üstlenecek? Ayrıca "emSize dönüştür" ne anlama geliyor? Em boyutu bir birim değildir. İnsanlara neden "AddString" in piksel birimini beklediğini söyleyemem (bu, puanınızı piksellere dönüştüren formülünüzden kaynaklanıyor)? – user764754

2
float emSize = graphics.DpiY * font.SizeInPoints/72; 
+6

Kodunuzun soruyu nasıl cevapladığı konusunda biraz daha ayrıntılı bilgi verebilir misiniz? – brodoll