Измерить Строку, не используя Графический объект?

В вашем коде есть ошибки:

//You have to set the array-type to Double. Because otherwise Swift thinks that you need an Int-array
var votes:[Double] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

func average(nums: [Double]) -> Double {

    var total = 0.0
    //use the parameter-array instead of the global variable votes
    for vote in nums{

        total += Double(vote)

    }

    let votesTotal = Double(nums.count)
    var average = total/votesTotal
    return average
}

var theAverage = average(votes)
40
задан Agnel Kurian 16 June 2009 в 19:03
поделиться

2 ответа

Если у вас есть ссылка на System.Windows.Forms, попробуйте использовать класс TextRenderer. Существует статический метод (MeasureText), который принимает строку и шрифт и возвращает размер. Ссылка MSDN

47
ответ дан 27 November 2019 в 01:30
поделиться

Вам не нужно использовать графический объект, который вы используете для рендеринга для измерения. Вы можете создать статический служебный класс:

public static class GraphicsHelper
{
    public static SizeF MeasureString(string s, Font font)
    {
        SizeF result;
        using (var image = new Bitmap(1, 1))
        {
            using (var g = Graphics.FromImage(image))
            {
                result = g.MeasureString(s, font);
            }
        }

        return result;
    }
}

В зависимости от вашей ситуации, возможно, стоит также установить dpi для растрового изображения.

23
ответ дан 27 November 2019 в 01:30
поделиться
Другие вопросы по тегам:

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