确定文本字符串中的行数?

soo*_*ise 4 c# drawstring

作为打印类的一部分,我希望能够在多个页面上打印长字符串,但我不知道如何计算整个字符串的高度,我将通过首先计算字符串中的行数来确定.我知道我可以计算换行符的数量,但我也使用自动换行,因此每当一行超过页面宽度时,就会添加换行符.所以我想我可以计算换行符的数量,并找出每一行的宽度,并找出是否需要每行的自动换行换行符,但这似乎是一个过于复杂的问题我想可以更简单地完成.

e.Graphics.DrawString(multiPageString, new Font("Courier New", 12), Brushes.Black, new RectangleF(0, 0, 810, pageHeight));
Run Code Online (Sandbox Code Playgroud)

如果您有任何建议,请告诉我们谢谢!

小智 5

int iMaxWidth = 240; // Maximum width, in pixels
string sText = @"blah-blah-blah";
Font objFont = new Font("Times New Roman", 13, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point);
StringFormat sfFmt = new StringFormat(StringFormatFlags.LineLimit);
Graphics g = Graphics.FromImage(new Bitmap(1, 1));
int iHeight = (int)g.MeasureString(sText, objFont, iMaxWidth, sfFmt).Height;
int iOneLineHeight = (int)g.MeasureString("Z", objFont, iMaxWidth, sfFmt).Height;
int iNumLines = (int)(iHeight/iOneLineHeight);
Run Code Online (Sandbox Code Playgroud)


Jon*_*han 1

我同意@David Heffernan 提供了一个真正的沼泽标准实现。对于他们要实现的价值来说,或者使用能够产生 100% 可靠的打印结果等报告服务的东西,这会变得很复杂。我感受到你的痛苦,印刷是辛苦的!