2011-08-16 40 views
4

我已經創建了一個用戶控件,它基本上是一個具有一些漂亮的小功能的按鈕。Graphics.DrawString砍中間字

這些功能之一是它確定文本的最大可能字體大小,同時保持文本框內的文本。

這正常在大多數情況下,但有時它會砍一個字的一半,以適應它英寸

因此,它可能出現..

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重載。之一以下三種方法之一:

DrawString(字符串,字體,刷子,的PointF,的StringFormat)

DrawString(字符串,字體,刷子,的RectangleF,的StringFormat)

DrawString(字符串,字體,刷,單,單,的StringFormat)

+1

嗨,我明白了,我正在使用StringFormatFlags,但它包裝中間詞,這是我的問題。 –