我有一个示例字符串,我计算其大小并通过下面的代码在表单中绘制字符串
public partial class Form1 : Form
{
Rectangle textRectangle;
string text = "testing the size 1 testing the size 1 testing the size 1 testing the size 1";
public Form1()
{
InitializeComponent();
Size textSize = this.CreateGraphics().MeasureString(text, this.Font, 100).ToSize();
textRectangle = new Rectangle(0, 0, textSize.Width, textSize.Height);
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
using (SolidBrush brush = new SolidBrush(Color.Blue))
{
e.Graphics.DrawString(text, this.Font, brush, textRectangle);
}
}
}
我的问题是从简单字符串计算的textRectangle不足以在表单中绘制。请参考附图,未绘制一些给定的字符串。
有谁能请更新我,为什么从MeasureString()计算的大小不足以使用DrawString()方法绘制?
答案 0 :(得分:0)
使用 MeasureTrailingSpaces formatflags 时,上述问题已得到解决。使用以下代码
StringFormat stringFormat = new StringFormat(StringFormatFlags.MeasureTrailingSpaces);
Size textSize = this.CreateGraphics().MeasureString(text, this.Font, 100, stringFormat).ToSize();
textRectangle = new Rectangle(0, 0, textSize.Width, textSize.Height);
在计算大小时,不考虑空格,因此要考虑字符串中的空格,必须使用MeasureTrailingSpaces。