Windows窗体动态调整文本大小以适合矩形

问题描述

| 使用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,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,Brushes.Black,sf);
我正在寻找的是一种实现TextFitsWithinBounds()的方法。框架中是否有任何类可以帮助我实现这一目标? MeasureString接近,但这似乎不允许我指定范围。     

解决方法

图形对象有一个
.MeasureString()
成员,从而导致了绘制文本的大小。