使用 Windows 窗体,我有一个矩形,我想在其中使用Graphics.DrawString
. 不过,我想做的是创建尽可能大的字体,同时将文本保持在矩形的范围内,并且只将文本包装到单词之间的下一行。
例如
Not acceptable Acceptable
+-------+ +--------+
| dotne | | |
| t | | dotnet |
| rocks | | rocks |
+-------+ +--------+
在半伪代码中,这就是我的想法
string text = "This is some Text";
StringFormat sf = new StringFormat();
sf.Alignment = StringAlignment.Center;
sf.LineAlignment = StringAlignment.Center;
RectangleF rect = new RectangleF(0,0,100,100);
float maxFontSize = 10F;
float minFontSize = 6F;
float fontSize = maxFontSize;
Font font = new Font(fontFamily, fontSize);
bool found = false;
do
{
font = new Font(fontFamily, fontSize);
if TextFitsWithinBounds(text, font, rect, sf)
found = true;
else
fontSize -= 0.1F;
} while (found == false && fontSize > minFontSize)
Graphics.DrawString(text, font, Brushes.Black, rect, sf);
我正在寻找的是一种实现 TextFitsWithinBounds() 的方法。框架中是否有任何课程可以帮助我实现这一目标?
MeasureString 接近了,但这似乎不允许我指定界限。