我正在使用 System.Drawing.Graphics.CopyFromScreen 来获取桌面的部分屏幕截图。我注意到一些奇怪的行为。在某些机器上,当应用程序 (WPF) 窗口具有 AllowsTransparency="True" 时,调用 CopyFromScreen 将捕获窗口“下方”的内容。但在其他机器上,它也会捕获调用窗口。
我已经在许多机器和操作系统上尝试过,但没有找到模式。在 XP 和 Windows 7 笔记本电脑上,它在透明窗口下捕获。在我们拥有的一个 Windows 7 桌面上,它捕获了窗口本身。Aero 或其他 Windows 7 显示功能似乎没有什么区别。
会不会是显卡问题?有没有办法在所有机器上获得一致的行为,或者预测或检测何时会发生此问题?
编辑感谢下面 Hans Passant 提供的链接,以及一些进一步的测试,我现在明白这个问题只与窗口透明度有关。在某些机器上,CopyFromScreen 捕获所有窗口,在其他机器上它只捕获非透明窗口。