0

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 は近づいていますが、境界を指定できないようです。

4

1 に答える 1

1

グラフィックス オブジェクトには.MeasureString()メンバがあり、その結果、描画されるテキストのサイズが決まります。

于 2011-05-24T10:06:22.863 に答える