我有一个字符串,我需要在绘图时计算矩形大小(文本高度)。我的实现使用DrawTextW()
带有DT_WORDBREAK or DT_CALCRECT
标志的函数。
我的字符串的一个例子:
thisisaverylonglonglonglineoftextthatneedstofitinsideagivenrectwidth
我可以在MSDN docs中看到,该DrawTextW()
方法指出:
如果最大的单词比矩形宽,则宽度会扩大。如果文本小于矩形的宽度,则宽度会减小。如果只有一行文本,DrawText 会修改矩形的右侧,使其与该行中的最后一个字符绑定。
但是在 MSDN 文档中,则DrawTextExW()
方法没有说明这一点。
所以我尝试使用该DrawTextExW()
方法计算高度,但是结果与DrawTextW()
函数相同,它扩展了矩形的宽度以适应最大的文本行。
DT_WORDBREAK
那么,当在哪里和指定位置绘制大字符串(没有空格)时,如何正确计算具有给定(固定)宽度的文本矩形的高度DT_CALCRECT
?
编辑:
附带说明一下,有人知道 Microsoft Excel 如何绘制单元格文本吗?此文本绘图是否有 API 调用?这是我最初的问题的来源,但是它在 Excel 中实现的方式是在任何字符(不仅仅是空格)上绘制文本和分词/自动换行。