[Gdiplus/Gdi]_[中级]_[实现多行文本的多种颜色绘制-富文本绘制]
场景
- 在开发
WTL/WIN32
界面程序时,有时候需要绘制多行的段落文本,但是文本里的数值需要设置红色以便能让人第一时间关注到它。这种文本可以称之为富文本。GDI
的DrawText
和GDIPlus
的DrawString
方法都只能连续绘制某个颜色的文本。怎么实现?
说明
-
在《绘图实现单行文本的多种颜色》[1]里介绍了绘制单行多种颜色文本的实现,但是并不支持换行,换行需要知道上一行绘制的文本长度和换行后的文本起始位置,实现起来并不容易。
-
要实现多行富文本,那么关键的方法是计算一行字符串在给定以下的
3
个重要的参数计算当前行需要绘制的字符个数,之后把剩余的字符串交给下一行绘制。方法calcOneLineFitStringLength
就是只存储给定行剩余宽度绘制适合个数的字符串,把剩余的字符递归传递给calcOneLineFitStringLength
本身计算并存储。-
起始横坐标
x
-
纵坐标
y</
-