gpt4 book ai didi

c++ - 使用 winapi 的可变字体/格式的文本换行 block

转载 作者:太空宇宙 更新时间:2023-11-04 14:16:22 29 4
gpt4 key购买 nike

我需要使用 MFC 和/或 Windows API 直接在屏幕上(而不是在富文本控件内)绘制任意字符串。字符串中的字符可以有不同的字体或颜色,可以是粗体、斜体、下划线或两者的任意组合。此外,用户可以选择将文本环绕在他们选择的范围内,并可以选择通过调整字体大小强制文本适应。

我正在考虑按照以下方式做一些事情:

  1. 将其解析为子字符串及其格式的 vector
  2. 使用 GetCharABCWidthsFloat 计算所有子串的宽度
  3. 手动计算换行符需要落在哪里
  4. 如有必要,使用较小的字体反复重复上述操作以使文本适合
  5. 使用 DrawTextW 单独绘制每个子字符串,使用前面子字符串的宽度和换行点确定它们的位置

有更好的方法吗?如果没有,我在实现时是否应该注意任何陷阱或技巧?

(我知道 DrawText 的 DT_CALCRECT | DT_WORDBREAK 标志,但我不认为这对我有用,因为 a)它假定整个字符串的字体/格式一致 b)我看到一些留言板帖子指出它没有正确计算斜体字符的宽度。真的吗?)

最佳答案

XAML 是您的 friend 。没有 .NET 就没有原生支持,但是有第 3 方库(例如 Xtreme Toolkit Pro)。下面是 XAML 标记功能的演示: http://www.codejock.com/download/win32/markupsample.zip

多年来一直在使用它。不能提示。

关于c++ - 使用 winapi 的可变字体/格式的文本换行 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10890430/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com