1

次のようなコードがあります。

string myText = "This is a test";
Font myFont = new Font("Arial", 10);
Rectangle rect = new Rectangle(10,10,100,100);
Graphics g = e.Graphics;
g.DrawString(myText, myFont, rect.X, rect.Y);

これは機能しますが、私がやりたいことは、テキストを長方形の寸法内で垂直方向および水平方向に中央に配置することです。さらに、可能であれば、テキストが大きすぎて 1 行に収まらない場合は、テキストを折り返したいと考えています。C#/GDI+ でこれを行うにはどうすればよいですか?

4

2 に答える 2

2

テキストの長さを確認して、テキストが収まり、自分 でラップすることを確認する必要がありますDrawString。さらに見てみると、デフォルトでラップすることを意味する NoWrap フラグがあります。StringFormat MeasureStringStringFormatFlags

最後のリンクから:

四角形内の書式設定が無効になっている場合の行間でのテキストの折り返し。このフラグは、四角形の代わりにポイントが渡された場合、または指定された四角形の線の長さがゼロの場合に暗黙的に示されます。

于 2012-11-19T22:02:28.060 に答える
0

それを行うための単純で研究されていない方法:

ワードラップするには、文字列を小さなサブ文字列に分割します。いえ

"this is"
"a test"

メソッドを使用しString.Split()て文字列を単語に分割し、文字列が特定のしきい値に達するまで単語を追加できます。次に、新しい文字列を作成します。

センタリングに関しては、個々の文字列にスペースを埋め込むことができます。垂直方向の中央揃えの場合、文字列の先頭にいくつかの改行を追加できます。

算数はお任せします。そんなに難しくないはずです。

于 2012-11-19T22:01:55.813 に答える