kub*_*tto 5 c++ windows winapi
我想编写一个 Windows C++ 应用程序,其中窗口的内容是窗口后面的内容(就好像窗口是透明的一样)。也就是说,我想检索窗口的边界框;捕获下面的这些坐标,并将它们绘制在我的窗口上。因此,在捕获过程中排除窗口本身至关重要。
“为什么不让窗户透明呢?” 你问。因为我的下一步是对该图像进行修改。我想对其应用一些任意过滤器。例如,假设我想模糊该图像,使我的窗户看起来像毛玻璃。
我尝试使用https://code.msdn.microsoft.com/windowsdesktop/Magnification-API-Sample-14269fd2上的放大 API 示例 ,它实际上为我提供了不包括窗口的屏幕内容。然而,重新渲染图像是在计时器中完成的,这会导致图像非常抖动;我不知道如何检索该图像并将其应用任意变换。
我不知道从哪里开始,此时确实可以使用一些指针。抱歉,如果我是从一个愚蠢的角度来处理这个问题的。
编辑:我正在添加我的意思的模型:
编辑 2:就像放大 API 示例一样,视图将不断刷新(尽可能频繁地刷新,为了论证起见,假设每 16 毫秒刷新一次)。请参阅Visolve Deflector示例;尽管它不会对捕获区域施加任何效果。
再次强调,之后我将修改图像数据;因此我无法使用放大 API 的内核矩阵支持。
您可以从修改 MAGCOLOREFFECT 开始。在 MagnifierSample.cpp 中,我们有:
if (ret)
{
MAGCOLOREFFECT magEffectInvert =
{{ // MagEffectInvert
{ -1.0f, 0.0f, 0.0f, 0.0f, 0.0f },
{ 0.0f, -1.0f, 0.0f, 0.0f, 0.0f },
{ 0.0f, 0.0f, -1.0f, 0.0f, 0.0f },
{ 0.0f, 0.0f, 0.0f, 1.0f, 0.0f },
{ 1.0f, 1.0f, 1.0f, 0.0f, 1.0f }
}};
ret = MagSetColorEffect(hwndMag,&magEffectInvert);
}
Run Code Online (Sandbox Code Playgroud)
对于更高级的效果,您可以将内容复制到内存设备上下文。
| 归档时间: |
|
| 查看次数: |
2366 次 |
| 最近记录: |