Программное измерение длины текста с использованием проблемы GDI + Graphics.MeasureString - PullRequest
0 голосов
/ 03 июня 2011

У меня есть следующий код, который работает на моей локальной машине (Win 7, .NET 4), но, похоже, он не работает на сервере.Я хочу программно измерить длину текста

Может ли кто-нибудь помочь с этим?

private float GetTextSize(string text, float textSize)
{
    using (Bitmap bmp = new Bitmap(1, 1))
    {
        bmp.SetResolution(96, 96);

        using (Graphics g = Graphics.FromImage(bmp)) 
        {
            using (System.Drawing.Font font = new System.Drawing.Font(fontName, textSize))
            {
                return g.MeasureString(text, font).Width;
            }
        }
    }
}

Я рассмотрю любое лучшее решение, если оно доступно.

Обновление:

Как определить, доступен ли тип шрифта на аппарате?

Обновление 2:

Почему мой вопрос получает минус баллы?Может кто-нибудь, пожалуйста, проголосуйте за него.

Заранее спасибо!

1 Ответ

0 голосов
/ 08 июня 2011

Проблема в том, что он будет возвращать различную длину текста даже для текста, который имеет одинаковые цифры, например, 1234 длиннее, чем abcd для некоторого типа шрифта.Моя предыдущая логика состоит в том, чтобы сравнивать количество символов для каждого текста и передавать самый длинный текст методу, что неверно на основании этой причины.

Решение состоит в том, чтобы вызвать метод для каждого текста,Длина текста, возвращаемого методом, достоверна для сравнения.

...