使用graphics.DrawString方法绘制时文本被剪裁

时间:2017-07-26 11:57:00

标签: c# winforms graphics drawing

我使用graphics.MeasureString方法来测量文本大小。并且根据测量的文本大小,我使用graphics.MeasureString绘制字符串。但是我正在使用StringFormat来测量和绘制字符串。但我在一些文本中发现文字剪辑问题,如“左”。

请在下面找到代码段,

string text = "Left";
Font font = new System.Drawing.Font("Segoe UI Semibold", 9F);
StringFormat format = new StringFormat(StringFormatFlags.NoWrap);
SizeF size = e.Graphics.MeasureString(text, font, 100, format);
e.Graphics.DrawString(text, font, new SolidBrush(Color.Black), new RectangleF(10, 10, size.Width, size.Height), format);

请在下面的屏幕截图中找到文字剪辑,

enter image description here

您能否建议如何解决此问题?

1 个答案:

答案 0 :(得分:0)

尝试以下方法。我已从代码中删除了StringFormat。它有效。

string text = "Left";
Font font = new Font("Segoe UI Semibold", 9F);
//StringFormat format = new StringFormat(StringFormatFlags.NoWrap);
SizeF size = e.Graphics.MeasureString(text, font, 100);
e.Graphics.DrawString(text, font, new SolidBrush(Color.Black), new RectangleF(10, 10, size.Width, size.Height));

<强> EDIT1

我根据OP的使用StringFormat枚举的请求修改了答案。

string text = "Left";
Font font = new Font("Segoe UI Semibold", 9F);
StringFormat format = new StringFormat(StringFormatFlags.NoWrap);
SizeF size = e.Graphics.MeasureString(text, font, 100, format);
e.Graphics.DrawString(text, font, new SolidBrush(Color.Black), new RectangleF(10, 10, size.Width + 5, size.Height), format);