根据我对documentation的理解,当使用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...
。
不应该使用WordEllipsis
标志将显示的字符串修剪为最后一个完整的单词?
(This it my text. It's long ...
)
答案 0 :(得分:2)
内部TextRenderer.DrawText
调用DrawText函数
相应的标志是:
DT_WORD_ELLIPSIS :截断任何不适合的词 矩形并添加椭圆。
DT_END_ELLIPSIS 对于显示的文字,如果字符串的结尾没有 适合矩形,它被截断并添加椭圆。如果一个 不在字符串末尾的单词超出了限制 矩形,它被截断而没有椭圆。
我已经为WordEllipsis
解释了与{1}}相同的.NET文档,但上面的句子可能更好地解释了这个选项应该做什么。
如果还不清楚,请看一下这个试图渲染var quote = "Not every thing that\n can be counted counts,\n and not everything that\n counts can be counted.";
的简单示例