【问题标题】:TextRenderer. How to render text multiline with endellipsis?文本渲染器。如何使用 endellipsis 渲染文本多行?
【发布时间】:2013-07-08 07:42:41
【问题描述】:

我怎样才能呈现这样的文本(简单的列表视图)?

尝试这样的代码不会出现省略号:

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

如果我删除TextFormatFlags.WordBreak,则文本变为单行。

它可以在拖放项目时手动热跟踪项目。

【问题讨论】:

    标签: c# winforms visual-styles


    【解决方案1】:

    正如 Hans 教我的那样,通过包含 TextBoxControl 标志有一个标志:

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

    【讨论】:

    • 但是,它使用不同的方法来呈现文本,我仍然无法获得文本的确切副本。例如:“ll”之间的差距呈现新的方式有点大,所有文本看起来更宽(
    • @DimDim DrawString 有很多问题,这就是为什么微软用 TextRenderer 修复了很多东西。不幸的是,TextRenderer 也有一些限制。总是需要考虑 WPF,以获得另一个答案。
    • 只需使用 TextFormatFlags.TextBoxControl 代替。不要伤害我:)
    • @HansPassant TextFormatFlags Enumeration 文档中的信息至少可以说是稀疏的。一如既往,danke schön。
    • 是的,这很接近 :) 朋友之间的 Dank je 或在 1970 年代长大。绝对是耶。
    猜你喜欢
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-20
    相关资源
    最近更新 更多