/// <summary> /// 计算所需高(暂不考虑英文的word wrapper) /// </summary> /// <param name="width">目标宽度</param> /// <param name="pagePadding">页边距</param> /// <param name="lineDistance">行距</param> /// <param name="font">字体</param> /// <returns>分行完毕的文本</returns> private List <string> CalculateHeight(int width, int pagePadding, int lineDistance, PixelFont font, string text) { List <string> result = new List <string>(); int availableWidth = width - pagePadding * 2;//除去页边距之后的可用宽度 List <char> line = new List <char>(); string[] lines = text.Split(new string[] { "\r\n" }, StringSplitOptions.None); int length = 0; foreach (var l in lines) { line.Clear(); length = 0; foreach (var c in l) { int len = font.MeasureCharDrawingLength(c); if (len + length > availableWidth) { result.Add(new string(line.ToArray())); line.Clear(); line.Add(c); length = len; } else { length += len; line.Add(c); } } result.Add(new string(line.ToArray())); } return(result); }
/// <summary> /// 计算所需高(暂不考虑英文的word wrapper) /// </summary> /// <param name="width">目标宽度</param> /// <param name="pagePadding">页边距</param> /// <param name="lineDistance">行距</param> /// <param name="font">字体</param> /// <returns>分行完毕的文本</returns> private List<string> CalculateHeight(int width, int pagePadding, int lineDistance, PixelFont font, string text) { List<string> result = new List<string>(); int availableWidth = width - pagePadding * 2;//除去页边距之后的可用宽度 List<char> line = new List<char>(); string[] lines = text.Split(new string[] {"\r\n" }, StringSplitOptions.None); int length = 0; foreach (var l in lines) { line.Clear(); length = 0; foreach (var c in l) { int len = font.MeasureCharDrawingLength(c); if (len + length > availableWidth) { result.Add(new string(line.ToArray())); line.Clear(); line.Add(c); length = len; } else { length += len; line.Add(c); } } result.Add(new string(line.ToArray())); } return result; }