private static List<string> WrapText(Graphics graphics, string text, double pixels, Font font, StringFormat sf)
{
string[] originalLines = text.Split(new string[] { " " }, StringSplitOptions.None);
List<string> wrappedLines = new List<string>();
StringBuilder actualLine = new StringBuilder();
double actualWidth = 0;
foreach (string item in originalLines)
{
string word = item + " ";
actualWidth += graphics.MeasureString(word, font, new PointF(0, 0), sf).Width;
if (actualWidth > pixels)
{
wrappedLines.Add(actualLine.ToString().TrimEnd());
actualLine.Clear();
actualWidth = 0;
}
actualLine.Append(word);
}
if (actualLine.Length > 0)
wrappedLines.Add(actualLine.ToString().TrimEnd());
return wrappedLines;
}