C# вычисление размера текстового блока

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 974
Благодарностей
4 431
Баллы
113
Создаю такое вот оглавление на картинке.
2018-03-11_21-47-37.png
Одним блоком добавить не могу, т. к. иконки должны быть напротив каждой главы.
Поэтому добавляю каждый заголовок в цикле, примерно так:
PHP:
Bitmap bmp = new Bitmap(w,h);
Graphics grp = Graphics.FromImage(bmp);

Color color = colors[0];
Brush brush = new SolidBrush(color);
Font font = new System.Drawing.Font("Arial", 30, FontStyle.Bold, GraphicsUnit.Pixel);
SizeF textSize = new SizeF();
textSize = grp.MeasureString(text[0], font);
System.Drawing.StringFormat stringFormat = new StringFormat();

for (int i = 0; i < 5; i++) {
    grp.DrawString(text[i], font, brush, new RectangleF(60, h + i*step, (int)(w*0.5)-50, step), stringFormat);
}
Но все блоки получаются одинаковыми. И если заголовок короткий, то получается дыра, если длинный, то не помещается.
Есть ли методы в C#, которыми, зная размер шрифта, ширину блока и длину строки можно вычислить высоту блока? Чтобы сдвинуть следующий блок на нужно расстояние вниз.
 

one

Client
Регистрация
22.09.2015
Сообщения
6 831
Благодарностей
1 273
Баллы
113
Кхмм... Это уже на C# верстают меню сайта? )
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 974
Благодарностей
4 431
Баллы
113

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)