1

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

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

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,或者我可以做一些其他的魔法来让文本填充图形?

我希望文本自动换行,并且所有单词的字体大小相同,因此不一定需要完全填充图形 - 希望这一切都有意义。

4

1 回答 1

2

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

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

于 2013-03-04T17:34:55.023 回答