使用RectangleF和DrawString用文本填充图形

时间:2013-03-04 17:31:07

标签: c# image text font-size graphic

我被要求为数据库中的某些项目生成占位符图形,但有一点需要注意 - 字体大小需要是动态的,以便文本填充整个图形。

代码的第一次迭代工作正常,但客户希望字体更大,以便更容易阅读图形。这是生成文本的部分片段:

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的文本和所有单词的字体大小相同,所以它不一定需要完全填充图形 - 希望这一切都有意义。

1 个答案:

答案 0 :(得分:2)

使用Graphics.MeasureString(文档:http://msdn.microsoft.com/en-us/library/6xe5hazb.aspx

如果要调整文本大小以填充区域,可以对不同大小进行二进制搜索,以确定仍适合目标区域的最大大小,然后使用该大小实际绘制字符串。