【发布时间】:2016-08-05 13:55:04
【问题描述】:
根据我对documentation的理解,在使用TextFormatFlags.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 ...)
【问题讨论】:
标签: c# winforms text-rendering