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.";

在此处输入图像描述