如何删除Bitblt的输出?(MFC)
How to remove the output of Bitblt? (MFC)
我输出了一个由Bitblt
创建的图像(位图)。
现在我想摆脱它。我该怎么办?(不要使用补丁,如FillSolidRect
等)
无法"撤消"或"擦除"BitBlt或任何其他绘图输出(除非在非常特殊的情况下,您可以执行基于XOR的绘图,您可以通过在原始图形上执行另一个XOR绘图操作来撤消)。
你唯一能做的就是在它上面画一些其他东西,这就是你所说的"补丁"。通常,您将绘制窗口背景颜色的实心矩形。这正是OnEraseBkgrnd
消息处理程序默认执行的操作,该处理程序在OnPaint
之前运行。具体来说,它使用窗口类的背景画笔,该画笔通常是使用COLOR_3DFACE
(对于对话框)或COLOR_WINDOW
(对于窗口)系统颜色进行绘制的画笔。
当然,你总是可以一开始就不做BitBlt。所有绘制代码都应始终位于OnPaint
消息处理程序函数内部,因此不可能最终得到"过时"图形。每当窗口需要重新绘制时,它都会调用此函数,并且该函数中的代码将重新绘制窗口。如果您不希望用位图绘制它,请不要调用 BitBlt。
如果您使用临时CDC
对象在窗口顶部完成了 BitBlt(通常不应该这样做),则可以通过触发窗口重绘来强制擦除它。最简单的方法是使用窗口的InvalidateRect()
成员函数;将NULL
作为指向要失效的矩形的指针传递将使窗口的整个工作区失效,或者您可以只使块状区域失效。
相关文章:
- 递归函数计算序列中的平方和(并输出过程)
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 请解释"函数1(p1,p2,p3);"的输出
- C++:将控制台输出存储在宏中更好吗
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 为什么我的代码在输出中增加了93天
- 如何从void函数输出字符串
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- AES加密到解密未正确输出
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- VS2017 MFC 无法将消息输出到控制台
- 如何显示基于 MFC 的应用程序类文件的输出
- 标准输出输出不会显示在基于 Windows MFC 对话框的应用的控制台上
- 如何删除Bitblt的输出?(MFC)
- MFC-无法从资源输出BMP图像
- 正在将控制台输出重定向到同一解决方案中的MFC屏幕输出
- C++ 在退出 WINAPI 之前将控制台输出保存到文本文件(无 MFC)
- 我在 MFC 中使用 TRACE,但它不起作用(没有输出).为什么
- MFC:当进程在win32文本区域(MFC应用程序)中执行时,异步(并发)显示进程的输出