我被要求为数据库中的某些项目生成占位符图形,但有一点需要注意 - 字体大小需要是动态的,以便文本填充整个图形。
代码的第一次迭代工作正常,但客户希望字体更大,以便更容易阅读图形。这是生成文本的部分片段:
using (Graphics Graphic = Graphics.FromImage(Img))
{
// Add Some Padding
Width = Width - 20;
Height = Height - 20;
// Generate The Text
Font GraphicFont = new Font("Arial", 26, FontStyle.Bold);
RectangleF RectF = new RectangleF(10, 10, (float)Width, (float)Height);
StringFormat sf = new StringFormat();
sf.Alignment = StringAlignment.Near;
sf.LineAlignment = StringAlignment.Near;
Graphic.DrawString(Title, GraphicFont, Brushes.Black, RectF, sf);
}
我可以检测到RectangleF
中的文字溢出,或者我可以在将DrawString
应用到图形之前检测到它{{1}}的大小,还是我可以做其他一些魔术来获取填写图形的文字?
我希望wordwrap的文本和所有单词的字体大小相同,所以它不一定需要完全填充图形 - 希望这一切都有意义。
答案 0 :(得分:2)
使用Graphics.MeasureString
(文档:http://msdn.microsoft.com/en-us/library/6xe5hazb.aspx)
如果要调整文本大小以填充区域,可以对不同大小进行二进制搜索,以确定仍适合目标区域的最大大小,然后使用该大小实际绘制字符串。