旋转后MeasureString不返回精确的宽度

时间:2014-11-14 06:25:27

标签: c# winforms graphics text-size

我使用MeasureString方法计算文字的宽度,但返回的值并不准确。我使用以下代码计算文字宽度

Size sz = g.MeasureString(text, font);
g.DrawString(text, font, brush, 
             new Rectangle(0, 0, (int)sz.Width, (int)sz.Height), stringFormat);
g.DrawRectangle(Pens.Red, new Rectangle(0, 0, (int)sz.Width, (int)sz.Height));

没有旋转就可以正常工作。我使用以下代码绘制旋转文本

g.RotateTransform(angle);
Size sz = g.MeasureString(text, font);
g.DrawString(text, font, brush, 
             new Rectangle(0, 0, (int)sz.Width, (int)sz.Height), stringFormat);
g.DrawRectangle(Pens.Red, new Rectangle(0, 0, (int)sz.Width, (int)sz.Height));

第二个代码段返回的宽度值与第一个不同,但也不正确。见下图

Additional space

在矩形的底部,文字后面有一些额外的空格。矩形是根据字符串的宽度和高度绘制的,所以我认为这与MeasureString方法有关。

请分享您对避免此事的想法

编辑:

如果文本长度很长(比如30个或更多字符),则可以看到更多的空间。对于角度0,90,180和270,旋转效果很好。附上截图

At 90 degree

0 个答案:

没有答案