【问题标题】:Erasing text drawn thorugh ExtTextOut function擦除通过 ExtTextOut 函数绘制的文本
【发布时间】:2013-03-15 21:11:41
【问题描述】:

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

提前致谢

【问题讨论】:

  • 我不确定我是否理解所有内容。给我们看一些代码。你也可以试试 SetBkMode(OPAQUE) 函数。
  • 显示代码。在所有者绘制的控件中,基本上我们在 OnDraw/OnPaint/OnBgErase 函数中重绘所有内容。

标签: c++ visual-c++ mfc


【解决方案1】:

我认为你不能只删除文本,而不触及其背后的内容。您必须重新绘制背景。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 2014-07-18
    • 2012-06-08
    • 1970-01-01
    • 2021-05-29
    • 2021-07-15
    相关资源
    最近更新 更多