2010-02-18 17 views
5

Per qualche ragione se posso aggiungere una stringa al GraphicsPath utilizzando AddString il carattere sta per essere più piccolo di quanto sembra che nella finestra di dialogo Carattere.Font 'GraphicsPath.AddString' è più piccolo del solito carattere

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); 

Qualcuno sa perché potrebbe farlo?

risposta

19

Supponendo unità del Font.Size è Point, è necessario convertire il formato che avete passato a AddString a emSize (L'altezza della scatola quadrata em che delimita il carattere).

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

Perché assumere l'unità di punto in cui v'è 'Font.SizeInPoints'? Cosa significa "Converti in emSize"? La taglia Em non è un'unità. Perché non dire alle persone che "AddString" si aspetta l'unità pixel (che presumo a causa della formula che converte i punti in pixel)? – user764754

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

Potresti elaborare un po 'di più su come il tuo codice risponde alla domanda? – brodoll

Problemi correlati