В вашем коде есть ошибки:
//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)
Если у вас есть ссылка на System.Windows.Forms, попробуйте использовать класс TextRenderer. Существует статический метод (MeasureText), который принимает строку и шрифт и возвращает размер. Ссылка MSDN
Вам не нужно использовать графический объект, который вы используете для рендеринга для измерения. Вы можете создать статический служебный класс:
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 для растрового изображения.