我使用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));
第二个代码段返回的宽度值与第一个不同,但也不正确。见下图
在矩形的底部,文字后面有一些额外的空格。矩形是根据字符串的宽度和高度绘制的,所以我认为这与MeasureString
方法有关。
请分享您对避免此事的想法
编辑:
如果文本长度很长(比如30个或更多字符),则可以看到更多的空间。对于角度0,90,180和270,旋转效果很好。附上截图