使用 WinAPI 使用可变字体/格式的文本自动换行块
word wrapping block of text with variable font/formatting using winapi
我需要使用 MFC 和/或 Windows API 直接在屏幕上(而不是在富文本控件内)绘制任意字符串。字符串中的字符的字体或颜色可以有所不同,可以是粗体、斜体、下划线或两者的任意组合。此外,用户可以选择在他们选择的范围内换行文本,并可以选择通过调整字体大小来强制文本适合。
我正在考虑做一些类似的事情:
- 将其解析为子字符串及其格式的向量
- 使用 GetCharABCWidthsFloat 计算所有子字符串的宽度
- 手动计算换行符需要落下的位置
- 如有必要,使用较小的字体迭代重复上述内容以使文本适合使用
- DrawTextW 单独绘制每个子字符串,使用前面子字符串的宽度和换行点确定它们的位置
有没有更好的方法?如果没有,在实施时我应该注意任何陷阱或技巧吗?
(我知道DT_CALCRECT |DT_WORDBREAK DrawText 的标志,但我认为这对我不起作用,因为 a) 它假设整个字符串的字体/格式一致,b) 我看到一些留言板帖子指出它没有正确计算斜体字符的宽度。真的吗?
XAML是你的朋友。没有.NET
就无法原生支持,但有第三方库(例如 Xtreme 工具包专业版)。下面是 XAML 标记功能的演示:http://www.codejock.com/download/win32/markupsample.zip
已经使用它多年了。不能抱怨。
相关文章:
- 如何检查字符串格式在读取C++文本文件时是否有效?
- 为什么使用 C++ 中的类对象写入文件中的数据以非文本格式存储?
- QT 标签 setText() 同时保留文本格式
- 输出使用 cout 转换为 ASCII 的文本时输出格式不正确,C++
- 如何设计对象以不同方式设置文本格式
- 使用文本格式来记录QT
- 如何将percision格式复制到文本文件
- C :如何从格式的文本文件中读取许多数据到程序中
- 使用无符号字符设置文本格式
- 阅读文本格式不一致
- 随机访问文件格式,用于分层组织的二进制文件和文本文件
- 要求文本编辑,文本格式
- 将Boost序列化文本存档转换为结构化格式
- 在Combobox中选择项目中的格式文本
- 读取C 和输出格式的文本文件
- Qt C++ 如何将加密文本的QByteArray保存到文件中,然后读取并格式化为QByteArray
- 以C++格式将数据从文本文件读取到 3D 矢量中
- 从包含 utf-8(印地语)格式文本的文件读取并写入其他文件
- 是否有用于80列格式文本输出的库/方法
- 如何读取json格式文本的字符流