场景
-
在使用
Gdiplus
绘制文本时, 偶尔会遇到需要支持绘制格式化文本的时候,而Gdiplus
在这方面并不好,没有官方提供支持的类,也不支持HTML
标签和CSS
的样式. 而大部分提供这类富文本的绘制目前我所知道的一种就是通过Web控件
来处理的. 比如调用Chromium
的渲染实现. -
另外一种实现就是通过实现自定义的富文本
RichText
控件,QQ
以前就是用的富文本来实现,显示可能是HTML
渲染?不过貌似现在它的聊天窗口也不支持一个消息里用两种字体设置不同的文本部分.
说明
-
Gdiplus
常见的计算文本区域的方法是 graphics.MeasureString. 我们如果要绘制文本局部样式,那么一个方案就是通过把这段文本截取几部分,之后使用DrawString
方法对不同部分进行设置不同的Font
和Color
里进行绘制, 从而不同部分显示不同的样式,问题是我们如何计算不同部分的文本所在的区域RectF
? 使用MeasureStrin