我正在开发一个应用程序,我必须捕获一个窗口的屏幕截图,我的应用程序本身的窗口是不可见的(隐藏它,制作屏幕截图,然后由于多种原因再次显示不是一个选项)。我通过遍历所有顶级窗口,构建它们的z顺序,并将它们的必要区域逐个捕获到位图中来实现。一般情况下它是有效的,除了像窗口右上角的X,最小化和最大化按钮之类的东西没有出现,它们看起来就像一个黑盒子。我假设这是因为它们是由Windows自己绘制而不使用GDI,所以它们根本就不在窗口的DC上,我不能BitBlt()它们。
我能做些什么吗?当然除了肮脏的伎俩。
答案 0 :(得分:-1)
我怀疑你使用32位位图(带alpha通道)渲染整个东西。
GDI一般不支持alpha,更糟糕的是,不同的GDI函数不一致地处理alpha字节。
尝试使用24bpp DIB作为目标位图,以避免不一致。