如何使 CGWindowListCreateImage 呈现正确的背景颜色?

How to make CGWindowListCreateImage render correct background color?

使用 CGWindowListCreateImage 捕获屏幕外的图像 window 是创建 QuickLook 样式放大动画的常用方法,但这似乎创建了一个背景颜色错误的图像,比真实的颜色稍浅window.

这会导致动画结束时出现闪光,从而破坏效果。

有谁知道为什么会发生这种情况以及可以采取什么措施吗?

编辑:我为这个问题创建了一个demonstration app。对于Stack Overflow问题来说有点大和复杂,但相关代码可能在ZoomingWindow.m方法takeSnapshotmakeAndPrepareSnapshotWindow.

在 Interface Builder 中将 window 外观设置为纹理修复了此问题。当然,这也会改变 window 的颜色,但在这种特殊情况下这是可以接受的。