C # Graphics.DrawString RectangleF Auto-Height: Как найти эту высоту?

Я пишу текст поверх изображения с помощью метода Graphics DrawString, привязывая свой текст к RectangleF. Вот мой код:

//Write header2
RectangleF header2Rect = new RectangleF();
header2Rect.Width = 600;
header2Rect.Location = new Point(30, 105);
graphicImage.DrawString(header2, new Font("Gotham Medium", 28, FontStyle.Bold),brush, header2Rect);
//Write Description
RectangleF descrRect = new RectangleF();
descrRect.Width = 600;
int measurement = ((int)graphicImage.MeasureString(header2, new Font("Gotham Medium", 28, FontStyle.Bold)).Height);
var yindex = int.Parse(105 + header2Rect.Height.ToString());
descrRect.Location = new Point(30, 105+measurement);
graphicImage.DrawString(description.ToLower(), new Font("Gotham", 24, FontStyle.Italic), SystemBrushes.WindowText, descrRect);

Это работает в некоторых случаях (например, когда header2 имеет длину всего 1 строку), но моя переменная измерения измеряет только высоту шрифта, а не весь прямоугольник DrawString . Я не хочу устанавливать статическую высоту header2Rect , потому что высота меняется в зависимости от этого текста.

yindex не работает, потому что header2Rect.Height = 0 . Есть ли способ узнать, сколько строк в моем header2 ?

Мне просто нужно сделать ширину MeasureString и разделить ее на ширину моего ограничивающего прямоугольника, а затем умножить на высоту MeasureString ? Я полагаю, есть способ получше.

Спасибо

[EDIT] Похоже, что высота на самом деле равна 0, но текст просто выливается наружу, но ширина по-прежнему ограничивает обтекание текстом. Я просто произвел математические вычисления, чтобы найти высоту, но мне хотелось бы, чтобы был способ получше.

6
задан Bart 22 July 2011 в 21:41
поделиться