这是一个奇怪的问题。
我正在使用BitBlt
从与我的 (WinForms( 窗口句柄关联的设备上下文复制到位图,它可以工作(或者我认为是这样(。
但是有一台机器,ElementHost 中的 WPF 元素不会显示在位图上:没有孔,就好像它们是透明的,后面的任何内容都会出现。
我一直在玩一个 VM,一个工作,另一个不工作。它们都具有相同的操作系统版本,我已经将已安装的程序和功能缩减为两者相同,但仍然有一个有效,另一个无效。
有没有人遇到过这个问题,有没有人知道从哪里开始搜索?
更新:感谢评论中的jsanalytics提示,我已经发现是Aero阻止了屏幕截图正常工作。现在弄清楚为什么以及如何处理它......
这不是答案,但它目前对我有用:
如果
[DllImport("dwmapi.dll", PreserveSig = false)]
public static extern int DwmIsCompositionEnabled(out bool enabled);
返回 true,然后我没有BitBlt
窗口的设备上下文,而是BitBlt
整个桌面,但裁剪为窗口的大小(使用 GetWindowRect
并将创建的位图调整为大小,然后将左和上传递到 BitBlt
中(。