c#system.drawing计算填充方形图像的1个字符的字体大小

c#system.drawing计算填充方形图像的1个字符的字体大小,c#,.net,system.drawing,C#,.net,System.drawing,如果我有一个尺寸相等的System.Drawing.Bitmap,例如100x100、50x50,并且我想使用此代码在单个字符中绘制: StringFormat stringFormat = new StringFormat(); stringFormat.Alignment = StringAlignment.Center; stringFormat.LineAlignment = StringAlignment.Center; font = new Font(_fontName, _fon

如果我有一个尺寸相等的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的值,使其紧密地适合图像的尺寸?

Graphics.MeasureString函数返回给定字体的字符串大小。在循环中,您可以确定最适合的字体大小

它会帮助你:

    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
float-fontsizeem=高度;
int charfits=0;内线=2;
对于(;charfits
你必须使用固定宽度的字体,这可能比计算字符宽度更容易。