TextFormatFlags枚举中EndEllipsis和WordEllipsis之间的区别是什么?
根据我对文档的理解,当使用TextFormatFlags.EndEllipsis
,应该修剪文本以适合显示矩形并用省略号替换:
EndEllipsis | 删除修剪线的末尾,并用省略号替换它们。
使用TextFormatFlags.WordEllipsis
,应将文本修剪为适合显示矩形内的最后一个单词,并添加省略号:
WordEllipsis | 将线条修剪为最近的单词,并在修剪线的末尾放置省略号。
但是,我似乎无法找到这两者之间的任何区别。
这是我的测试控件的代码:
public partial class UserControl1 : UserControl { public UserControl1() { InitializeComponent(); this.Text = "This it my text. It's long enough to get cut in display."; } protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); var flags = (this.IsWordEllipsis) ? TextFormatFlags.WordEllipsis : TextFormatFlags.EndEllipsis; TextRenderer.DrawText(e.Graphics, this.Text, this.Font, e.ClipRectangle, this.ForeColor, flags); } private bool _IsWordEllipsis; public bool IsWordEllipsis { get { return _IsWordEllipsis; } set { _IsWordEllipsis = value; this.Invalidate(); } } }
无论我设置IsWordEllipsis
属性的值是什么 – 文本总是呈现为
This it my text. It's long eno...
This it my text. It's long eno...
不应该使用WordEllipsis
标志将显示的字符串修剪为最后一个完整的单词?
( This it my text. It's long ...
)
TextRenderer.DrawText
内部调用DrawText函数
相应的标志是:
DT_WORD_ELLIPSIS :截断任何不适合矩形的单词并添加省略号。
DT_END_ELLIPSIS对于显示的文本,如果字符串的末尾不适合矩形,则会截断该字符串并添加省略号。 如果不在字符串末尾的单词超出矩形的限制,则会截断没有省略号的单词。
我已经像你一样解释了WordEllipsis
.NET文档,但是上面的句子可能更好地解释了这个选项应该做什么。
如果仍然不清楚,请看一下这个简单的例子,它试图渲染var quote = "Not every thing that\n can be counted counts,\n and not everything that\n counts can be counted.";