我正在使用自定义绘图在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
答案 0 :(得分:-1)
你将不得不逐字逐句地循环,使用Graphics.MeasureString
测量每一个,直到超出矩形,然后退回一个字符。
如果它是一个多行文本框会变得更复杂,因为那时你必须弄清楚正确的单词分隔符。如果打破整个单词,你最终可能会退回多个角色。