1

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

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

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

有更好的方法吗?如果没有,在实施时我应该注意什么问题或技巧?

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

4

1 回答 1

0

XAML 是您的朋友。如果没有 ,则本机不支持.NET,但有 3rd 方库(例如 Xtreme Toolkit Pro)。这是 XAML 标记功能的演示:http: //www.codejock.com/download/win32/markupsample.zip

多年来一直在使用它。不能抱怨。

于 2012-06-29T14:20:34.417 回答