c # system.drawing вычисляет размер шрифта для 1 символа, чтобы заполнить квадратное изображение - PullRequest
4 голосов
/ 29 января 2012

Если у меня есть System.Drawing.Bitmap с равными размерами, например 100x100, 50x50 и я хотел использовать этот код для рисования одним символом:

StringFormat stringFormat = new StringFormat();
stringFormat.Alignment = StringAlignment.Center;
stringFormat.LineAlignment = StringAlignment.Center;

font = new Font(_fontName, _fontSize, _fontStyle);

GraphicsPath path = new GraphicsPath();

path.AddString("A", font.FontFamily, (int)font.Style, font.Size, rect, stringFormat);

Как мне рассчитать значение _fontSize, чтобы оно плотно вписывалось в размеры изображения?

Ответы [ 2 ]

1 голос
/ 29 января 2012

Функция Graphics.MeasureString возвращает размер строки данного шрифта. В цикле вы можете определить, какой размер шрифта подходит лучше всего.

http://msdn.microsoft.com/en-us/library/403ezxd2.aspx

0 голосов
/ 05 мая 2014

это тебе поможет:

    float fontsizeem = height;
    int charfits=0;int line=2;
    for (; charfits < captchastring.Length || line < 1 ; fontsizeem--)//font support style correct // color fix
    {
        graphic.MeasureString(captchastring, new Font(fontFamily, fontsizeem, fontstyle), new SizeF((float)width*0.6f, (float)height*0.6f), format, out charfits, out line);

    }

    fontsizeem *= graphic.DpiY /72 ; // this unit converting fucks me out :(((((((

    path.AddString(captchastring, fontFamily,(int) fontstyle,fontsizeem,rectangle, format);// --  size
...