我有一个派生自 CStatic 的类,并且在那上面画线以显示 MFC C++ 项目中的测量值。问题是我在大约线的中间显示线的距离。我正在使用 ExtTextOut 函数来绘制文本。当我为此使用设备上下文时,我用谷歌搜索了很多以删除该文本并在其他位置重绘,但我无法做到。基本上 CStatic 有一个图像显示,我在其上进行测量。请问谁能告诉我如何在不损害背景图像的情况下擦除通过 ExtTextOut 绘制的文本?
提前致谢
我有一个派生自 CStatic 的类,并且在那上面画线以显示 MFC C++ 项目中的测量值。问题是我在大约线的中间显示线的距离。我正在使用 ExtTextOut 函数来绘制文本。当我为此使用设备上下文时,我用谷歌搜索了很多以删除该文本并在其他位置重绘,但我无法做到。基本上 CStatic 有一个图像显示,我在其上进行测量。请问谁能告诉我如何在不损害背景图像的情况下擦除通过 ExtTextOut 绘制的文本?
提前致谢
我认为您不能只删除文本,而将其背后的内容保持不变。您必须再次重绘背景。
如果您不想重绘所有内容,则可以使文本所在的部分无效(使用 InvalidateRect 或 InvalidateRgn),并且仅重绘该部分。
另一种适用于线条但我不知道它是否适用于文本的选项是使用CDC::SetROP2将绘图模式设置为 R2_XORPEN (我认为),绘制文本,然后再次绘制以擦除它。但是,通过这种方式,文本看起来会与背景“混合”。