проблема с TextRenderer. MeasureText

Привет я использую 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

5
задан casperOne 13 June 2012 в 18:06
поделиться

1 ответ

Точность измерения Текст не известен.

Он лучше :

    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 );
    }
11
ответ дан 18 December 2019 в 06:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: