gpt4 book ai didi

c++ - 如何删除 Bitblt 的输出? (MFC)

转载 作者:行者123 更新时间:2023-11-30 03:35:55 34 4
gpt4 key购买 nike

我输出了一张由 Bitblt 创建的图像(位图)。

现在我想摆脱它。我能怎么做? (不要使用补丁,如FillSolidRect等)

最佳答案

没有办法“撤消”或“删除”BitBlt 或任何其他绘图输出(除了在非常的特殊情况下,您可以执行基于 XOR 的绘图,您可以通过执行另一个来撤消异或绘图操作在原来的之上)。

你唯一能做的就是在它上面绘制其他东西,这就是你所说的“补丁”。通常,您会绘制一个窗口背景颜色的实心矩形。这正是 OnEraseBkgrnd 消息处理程序默认执行的操作,它在 OnPaint 之前运行。具体来说,它使用窗口类的背景画笔,通常是使用 COLOR_3DFACE(对于对话框)或 COLOR_WINDOW(对于窗口)系统颜色绘制的画笔。

当然,您始终可以首先执行 BitBlt。 所有 绘画代码应该总是进入OnPaint 消息处理函数,所以你不可能以“陈旧”的图形结束.每当窗口需要重新绘制时,它就会调用此函数,并且该函数内的代码将重新绘制窗口。如果您不想用位图绘制它,请不要调用 BitBlt。

如果您使用临时 CDC 对象在窗口顶部完成了 BitBlt(您通常不应该这样做),您可以强制执行此操作通过触发窗口的重绘来删除。最简单的方法是使用窗口的InvalidateRect()成员函数;传递 NULL 作为指向要无效的矩形的指针将使窗口的整个客户区无效,或者您可以只使 blit 区域无效。

关于c++ - 如何删除 Bitblt 的输出? (MFC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40941137/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com