1

データベース内のいくつかのアイテムのプレースホルダー グラフィックを生成するように依頼されましたが、注意点が 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 に答える