有没有什么提示可以动态调整字体大小以适应特定区域?例如,我有一个800x110矩形,我想用最大的字体填充它,以支持我要显示的整个字符串。
Bitmap bitmap = new Bitmap(800, 110);
using (Graphics graphics = Graphics.FromImage(bitmap))
using (Font font1 = new Font("Arial", 120, FontStyle.Regular, GraphicsUnit.Pixel))
{
Rectangle rect1 = new Rectangle(0, 0, 800, 110);
StringFormat stringFormat = new StringFormat();
stringFormat.Alignment = StringAlignment.Center;
stringFormat.LineAlignment = StringAlignment.Center;
graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit;
graphics.DrawString("Billy Reallylonglastnameinstein", font1, Brushes.Red, rect1, stringFormat);
}
bitmap.Save(Server.MapPath("~/Fonts/" + System.Guid.NewGuid() + ".png"));
很明显,在大字体大小提供的空间中不可能完整显示整个名称。有没有简单的方法可以解决这个问题?
TextRenderer.MeasureText
或Graphics.MeasureString
来测量文本大小,并迭代地降低字体大小直到适合为止? - Uwe Keim