Graphics.DrawString:有效计算矩形中完全显示的字符数

时间:2015-12-08 12:19:28

标签: .net winforms gdi+ clip drawstring

我正在使用自定义绘图在WinForms应用程序中绘制字符串。经典的Graphics.DrawString方法用于:

g.DrawString(text, font, brush, rect, stringFormat);

输出字符串text可以被矩形rect剪切,我需要计算rect中完全可见的字符数。如何使用.NET Framework内置工具?

请不要建议使用其他方法输出文字。我需要为GDI + Graphics.DrawString解决这个任务。

更新:是的,当然,我可以在一个循环中使用Graphics.MeasureString,在这个循环中我总结了字符串开头的每个字符的宽度,但是我需要像DT_MODIFYSTRING标志那样更高效的东西在WinAPI DrawText函数中。

除此之外,Graphics.MeasureString无法正确计算所需的宽度。更多信息,请参阅此文:

http://www.codeproject.com/Articles/2118/Bypass-Graphics-MeasureString-limitations

1 个答案:

答案 0 :(得分:-1)

你将不得不逐字逐句地循环,使用Graphics.MeasureString测量每一个,直到超出矩形,然后退回一个字符。

如果它是一个多行文本框会变得更复杂,因为那时你必须弄清楚正确的单词分隔符。如果打破整个单词,你最终可能会退回多个角色。