首页 > 解决方案 > 使用 C++ 将自定义过滤器应用于 RECT 后面的所有内容,a'la CSS 背景过滤器样式

问题描述

我想将窗口中所有内容的颜色从 反转(300, 100)(600, 500)

我尝试使用从库中设置BitBltDSTINVERT标志winuser.h,但如果有任何变化,它就会中断。让它在一个循环中连续反转也不起作用,因为它会反转已经反转的部分。

我还尝试RedrawWindow结合BitBltin 循环来重绘我需要反转的部分,虽然它确实成功地重绘了窗口并反转它,但它会导致一些非常糟糕的闪烁。

我当前的代码:

RedrawWindow(hwnd, NULL, NULL, RDW_UPDATENOW | RDW_INVALIDATE);

BitBlt(
        GetDC(hwnd),
        300, 100,
        600, 500,
        NULL,
        0, 0,
        DSTINVERT
);

我想要实现的示例:

图片

标签: c++windowsuser-interfacewinapigdi+

解决方案


推荐阅读