2011-08-16 14 views
4

私は基本的にいくつかの素晴らしい小さな機能を持つボタンであるusercontrolを作成しました。Graphics.DrawString中途半端に細断

これらの機能の1つは、テキストが可能な最大のフォントサイズを決定し、テキストをボックス内に収めておくことです。

これは、ほとんどのケースでは正常に動作しますが、時にはそれは、それに合わせて半分に言葉を切るだろう。

だから...

stackov 
erflow 

よりもむしろ

として表示される場合があります
stackoverflow 

(しかし、小さなフォントで)

私はStringFormatFlagがあっただろうと思いました単語の折り返しの仕方を指定することができます。

単語の折り返しは必要ですが、「文字の折り返し」は不要です。

ありがとう リッチ。

+2

テキストの描画コードを投稿できますか? – LarsTech

+0

コードは複雑ではありませんでしたが、あなたの提案された答えは私の問題を解決しました。 –

答えて

3

あなたが代わりにTextRendererを使用して試みることができる:

TextRenderer.DrawText(e.Graphics, 
         "stackoverflow", 
         this.Font, 
         new Rectangle(10, 10, 32, 32), 
         Color.Black, 
         Color.Empty, 
         TextFormatFlags.WordBreak | TextFormatFlags.VerticalCenter | TextFormatFlags.HorizontalCenter); 

    TextRenderer.DrawText(e.Graphics, 
         "stack overflow", 
         this.Font, 
         new Rectangle(50, 10, 32, 32), 
         Color.Black, 
         Color.Empty, 
         TextFormatFlags.WordBreak | TextFormatFlags.VerticalCenter | TextFormatFlags.HorizontalCenter); 

enter image description here

+0

素晴らしい。私は年齢のために.netのグラフィックスを使っていましたが、この** TextRenderer **クラスに遭遇することはありません。それはトリックをやっているようだ..ありがとう! :-) –

-1

StringFormat.FormatFlagsプロパティを設定するときは、StringFormatFlags .NoWrapを指定する必要があります。次に、StringFormatクラスを受け入れるDrawStringオーバーロードのいずれかを使用します。以下の3つの方法のいずれか

DrawString(文字列、フォント、ブラシ、PointF、StringFormat)

DrawString(文字列、フォント、ブラシ、RectangleF、StringFormat)

DrawString

(文字列、フォント、ブラシ、シングル、シングル、StringFormat)

+1

こんにちは、私は理解して、私はStringFormatFlagsを使用していますが、それは私の問題である中間語をラップしています。 –

関連する問題