嗨,我正在使用TextRenderer.MeasureText()方法来测量给定字体的文本宽度。我使用Arial Unicode MS字体来测量宽度,这是一种Unicode字体,其中包含所有语言的字符。该方法在不同的服务器上返回不同的宽度。两台计算机都装有Windows 2003,并安装了.net 3.5 SP1。
这是我们使用的代码
using (Graphics g = Graphics.FromImage(new Bitmap(1, 1)))
{
width = TextRenderer.MeasureText(g, word, textFont, new Size(5, 5), TextFormatFlags.NoPadding).Width;
}
知道为什么会这样吗?
我使用C#2.0
最佳答案
MeasureText不准确。
这是一个更好的方法:
protected int _MeasureDisplayStringWidth ( Graphics graphics, string text, Font font )
{
if ( text == "" )
return 0;
StringFormat format = new StringFormat ( StringFormat.GenericDefault );
RectangleF rect = new RectangleF ( 0, 0, 1000, 1000 );
CharacterRange[] ranges = { new CharacterRange ( 0, text.Length ) };
Region[] regions = new Region[1];
format.SetMeasurableCharacterRanges ( ranges );
format.FormatFlags = StringFormatFlags.MeasureTrailingSpaces;
regions = graphics.MeasureCharacterRanges ( text, font, rect, format );
rect = regions[0].GetBounds ( graphics );
return (int)( rect.Right );
}
关于winforms - TextRenderer.MeasureText问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2116216/