我有一个窗口,由各种对象绘制以创建分层效果(想想平视显示器,其中一个对象绘制指南针,另一个绘制网格线,另一个绘制高度计读数等)。因此,每个对象都有一个它绘制到的黑色内存位图。当我调用该对象的 Draw 函数时,内存位图被 blits 到应用程序窗口。内存位图一开始都是黑色的,对象在上面绘制。黑色是透明色,所以它被遮盖了。结果是叠加效果。
因此,我一直在 blt() 函数中使用 OR 作为我的逻辑函数并且它起作用了。但是,我注意到,如果前一层涂成白色,那么在它上面绘制的图层看起来就像在前一层下面。白色(ish)颜色是唯一发生这种效果的颜色。所有其他颜色都正确绘制(也就是说,该图层看起来像是在前一个图层之上绘制的,依此类推)。有人见过这种现象吗?
最佳答案
您为此使用了错误的函数。如果您尝试覆盖的像素恰好是黑色,则使用带有逻辑 OR 的 BitBlt 将起作用,但如果您将两种非零颜色与 OR 组合,则会得到奇怪的结果。尝试改用 TransparentBlt。该函数可让您明确指定哪种颜色应该是透明的。
关于c++ - Blt() 创建图层效果。不工作。我是在使用错误的逻辑函数还是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/966138/