Delphi:如何在请求的宽度和行数中绘制一些文本,结尾省略号?
我需要在具有固定宽度(以像素为单位)和固定数量的文本行的表格单元格中绘制一些文本。如果文本被单元格矩形剪切,则必须以省略号结尾。问题是我无法正确计算文本矩形(或者TextRect / DrawText过程无法正常工作,我不确定)。
我试着用这种计算文本矩形的方法:
var
TextRect: TRect;
tm: TEXTMETRIC;
...
GetTextMetrics(Canvas.Handle, tm);
TextLineHeight := tm.tmHeight + tm.tmExternalLeading;
TextRect.Bottom := TextRect.Top + TextLineHeight * NumberOfLines;
Canvas.TextRect(TextRect, 'some long long long text',
[tfTop, tfLeft, tfEndEllipsis, tfWordBreak]);
已正确计算剪切矩形,但省略号未显示。
当我将剪切矩形的高度减少1个像素时出现省略号:
TextRect.Bottom := TextRect.Top + TextLineHeight * NumberOfLines - 1;
但是我的文字底线的一些像素被剪裁了。
怎么做正确?
没有找到相关结果
已邀请:
2 个回复
勘掸府迫路
我会留意,如果操作系统的未来版本决定完全剪切最后一行,如果它不完全适合矩形.. :)
晤默报
计算所需的矩形。