BitBlt和ElementHost在某些机器上不起作用



这是一个奇怪的问题。

我正在使用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 中(。

相关内容

最新更新