2010-02-18 10 views
5

Por alguna razón, si añado una cadena a GraphicsPath usando AddString la fuente va a ser menor de lo que se ve como en el diálogo Fuente.fuente en 'GraphicsPath.AddString' es más pequeña que la fuente habitual

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

¿Alguien sabe por qué podría estar haciendo eso?

Respuesta

19

Suponiendo que la unidad de su Font.Size es Point, debe convertir el tamaño que usted pasó a AddString a emSize (La altura de la caja cuadrada em que delimita el carácter).

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

Por qué asumir la unidad de coma cuando hay 'Font.SizeInPoints'? Además, ¿qué significa "convertir a emSize"? El tamaño de Em no es una unidad. ¿Por qué no decirle a la gente que 'AddString' espera la unidad de píxeles (que supongo que debido a su fórmula que convierte puntos en píxeles)? – user764754

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

¿Podría elaborar un poco más sobre cómo su código responde la pregunta? – brodoll

Cuestiones relacionadas