【发布时间】:2013-11-09 13:59:57
【问题描述】:
在您可以动态调整字体大小以适应特定区域的同时,是否有人提供提示?例如,我有一个 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并反复减小字体大小直到适合? -
@farina 我改变了我的答案,我认为这个解决方案可以帮助你解决它。
标签: c# .net fonts system.drawing