c++ - 删除通过 ExtTextOut 函数绘制的文本

标签 c++ visual-c++ mfc

我有一个派生自 CStatic 的类,我在该类上绘制线条以显示 MFC C++ 项目中的测量值。问题是我在线的中点附近显示线的距离。我正在使用 ExtTextOut 函数来绘制文本。当我为此使用设备上下文时,我在谷歌上搜索了很多以删除该文本并在其他位置重新绘制,但我无法做到。基本上 CStatic 有一个图像显示,我在上面绘制以进行测量。谁能告诉我如何在不损坏背景图像的情况下删除通过 ExtTextOut 绘制的文本?

提前致谢

最佳答案

我不认为你可以只删除文本,而让文本后面的内容保持不变。你必须重新绘制背景。

如果您不想重绘所有内容,您可以使文本所在的部分无效(使用 InvalidateRect 或 InvalidateRgn),并且只重绘该部分。

另一个选项,适用于线条,但我不知道它是否适用于文本,是用 CDC::SetROP2 设置绘图模式。到 R2_XORPEN(我认为),绘制文本,然后再次绘制以将其删除。不过,通过这种方式,文本看起来会与背景“混合”在一起。

关于c++ - 删除通过 ExtTextOut 函数绘制的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15630881/

相关文章:

c++ - 错误 C2143 : syntax error : missing ';' before '*' (haven't found solution)

c++ - 为什么使用指向函数的指针调用虚函数时不需要 "this"指针?

C++ 错误 : cannot convert ‘char (*)[63]’ to ‘char*’ in initialization

c++ - 通过信号唤醒std::getline

c++ - 如何在 C++ 集合中插入值

c++ - 使用CStringW/CStringA和CT2W/CT2A转换字符串有什么区别?

visual-c++ - 如何在 C++ 中将两个数组相乘?

C++ lambda 代表

c++ - 打印的 CDC 在纸上显得很小

c++ - MFC - 示例编辑框阿拉伯语字符集