0

我尝试使用两个 TextOut 调用和 TA_UPDATECP 标志来绘制选定的文本,但是当我移动选定的区域时,字符会移动一点。

有人知道正确的方法吗?

4

2 回答 2

0

我相信抗锯齿和 ClearType 可以在小数像素位置绘制文本。如果您绘制一串文本,然后尝试重新绘制中间的一部分,则可能无法从与中间字符完全相同的位置开始绘制文本。诀窍似乎是重绘整个字符串,但为选定的文本添加了一个剪辑区域。

这篇关于编写 Win32 文本编辑器的教程详细介绍了如何绘制选定的文本。

于 2009-05-31T14:17:20.377 回答
0

根据 MSDN 文档,当您使用SetTextAlign()设置 TA_UPDATECP 标志时,TextOut()会忽略其位置参数,以支持设备上下文的当前位置。在没有看到您的代码的情况下,我怀疑您的绘图算法调用 TextOut() 的当前位置会根据选择而略有不同。

作为一种调试策略,您可以在调用 TextOut() 之前调用GetCurrentPositionEx( ) 以获取当前位置,并确保它符合您对文本绘制位置的预期。

于 2009-05-06T04:20:05.123 回答