2013-07-08 31 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