用GDI和&amp ;;刺激文本包装Direct3D的

时间:2011-01-24 04:49:59

标签: c++ gdi direct3d textwrapping

如果我使用Direct3D的DrawText,其行为类似于GDI对应物,并且我启用了DT_WORDBREAK格式化标记,它会在出现情况时剪切撇号上的文本,这会使许多标题和文本显示看起来像一团糟。例如,它将显示为:

  

The Horseman'   先生

应该说:

  


  无头骑士的
  头

考虑到字体处理函数的限制性质似乎不太可能,但有没有任何方法来指定它,以便它只在白色空间上剪切文本或者什么时候完全没有什么可以做?

3 个答案:

答案 0 :(得分:1)

我之前已经遇到过这种情况,唯一的解决方案就是编写自己的自动换行器,使用DT_CALCRECT来测量给定字符串的宽度。这很烦人,而且很糟糕,但我从未见过其他选择。

答案 1 :(得分:1)

您可以借助GetTextExtentPoint32功能手动换行。

答案 2 :(得分:0)

我不这么认为(我可能错了)。但是您可以在宽度上设置“虚拟”限制。计算行长度(char_count * font_width)并自己跳转。您甚至可以添加特殊字符“\ n”,以插入您自己的跳转...