Привет я использую TextRenderer. MeasureText () метод для измерения текстовой ширины для данного шрифта. Я использую шрифт Arial Unicode MS для измерения ширины, которая является Шрифтом юникода, содержащим символы для всех языков. Метод возвращает различные ширины на различных серверах. Обе машины имеют 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
Точность измерения Текст не известен.
Он лучше :
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 );
}