2013-07-08 29 views
3

我如何呈現這樣的文本(簡單列表視圖)?TextRenderer。如何使用endellipsis渲染文本多行?

default ListView render

嘗試這樣的代碼沒有呈現省略號:

TextRenderer.DrawText(_listGraphics, 
        anItem.Text, GetItemFont(anItem), 
        textRec, 
        Color.FromKnownColor(KnownColor.ControlText), 
        TextFormatFlags.Top| TextFormatFlags.EndEllipsis| 
        TextFormatFlags.WordBreak | TextFormatFlags.HorizontalCenter); 

如果我刪除TextFormatFlags.WordBreak,則文本變爲單行。

它的手動熱追蹤項目,而拖放他們。

回答

5

正如漢斯教我的,有應該是一個標誌由包括TextBoxControl標誌:

TextRenderer.DrawText(e.Graphics, myString, this.Font, 
         textRec, Color.Black, Color.Empty, 
         TextFormatFlags.HorizontalCenter | 
         TextFormatFlags.TextBoxControl | 
         TextFormatFlags.WordBreak | 
         TextFormatFlags.EndEllipsis); 
+0

它的工作原理!謝謝。 – DimDim

+0

但是,它使用不同的方法來呈現文本,我仍然無法獲得文本的確切副本。例如:「LL」之間的差距呈現新的方式有點大了,所有的文字看起來更寬( – DimDim

+0

@DimDim的DrawString有很多的問題,這就是爲什麼微軟修復了很多的事情TextRenderer不幸的是,TextRenderer有一定的侷限性,太。總是有WPF考慮,對另一個答案。 – LarsTech