我有这样的事情:
每个都有3个相同大小,宽度为60px的矩形。
...
var font = new Font("Arial", 9, FontStyle.Bold);
var format = new StringFormat() {FormatFlags = StringFormatFlags.LineLimit}
...
g.DrawString(content, font, brush, rect, format);
(注意:我在文字前加上边框,并在A' A之前切割红线以便于查看边界)
我意识到DrawString()
正在修剪我的' 10&上午11点。但是,如果您检查红线是如何切断' A 的,那么您会看到第一行' A'从早上9点开始,比它下面的2 A更远的地方坐了几个像素,但AM没有被修剪掉。
这意味着,实际上矩形DO仍然有足够的空间来容纳“M'在,我们可以从红线判断,但是DrawString()
选择将其剪掉,为什么?如何解决?
答案 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)
的输出
这是new StringFormat(StringFormatFlags.LineLimit | StringFormatFlags.NoWrap, 1003) { Trimming = StringTrimming.None })
的正确输出
会对你的情况产生影响。