图形DrawString()剪切文本关闭,而矩形仍然有更多的空间

时间:2015-04-15 09:46:46

标签: c# graphics

我有这样的事情:

每个都有3个相同大小,宽度为60px的矩形。

...
var font = new Font("Arial", 9, FontStyle.Bold);
var format = new StringFormat() {FormatFlags = StringFormatFlags.LineLimit} 
...
g.DrawString(content, font, brush, rect, format);

enter image description here

(注意:我在文字前加上边框,并在A' A之前切割红线以便于查看边界)

我意识到DrawString()正在修剪我的' 10&上午11点。但是,如果您检查红线是如何切断' A 的,那么您会看到第一行' A'从早上9点开始,比它下面的2 A更远的地方坐了几个像素,但AM没有被修剪掉。

这意味着,实际上矩形DO仍然有足够的空间来容纳“M'在,我们可以从红线判断,但是DrawString()选择将其剪掉,为什么?如何解决?

1 个答案:

答案 0 :(得分:1)

希望,设置格式= new StringFormat(StringFormatFlags.LineLimit | StringFormatFlags.NoWrap, 1003) { Trimming = StringTrimming.None })

RectangleF rec = new RectangleF();
rec.X = 100;
rec.Y= 100;
rec.Width = 100;
rec.Height = 20;
e.Graphics.DrawRectangles(Pens.Black, new RectangleF[] { rec });
e.Graphics.DrawString("12345678901234", new Font("Arial", 9, FontStyle.Bold), Brushes.Red, rec, 
new StringFormat(StringFormatFlags.LineLimit | StringFormatFlags.NoWrap, 1003) { Trimming = StringTrimming.None });

这是new StringFormat(StringFormatFlags.LineLimit, 1003)的输出 Incorrect output

这是new StringFormat(StringFormatFlags.LineLimit | StringFormatFlags.NoWrap, 1003) { Trimming = StringTrimming.None })的正确输出 enter image description here

会对你的情况产生影响。