【发布时间】:2011-02-05 22:08:52
【问题描述】:
想象一个包含子 WPF 窗口的 MDI 应用程序中的文档窗口,例如边栏。如何获得同时包含 WPF 像素和 GDI(非 wpf)像素的位图?
我发现,在为 Win7 任务栏应用程序图标悬停进行缩略图预览时,我在 WPF 像素应位于的预览部分中变黑。我当前的方法只是抓取文档窗口的位图捕获。然后我得到一个用于预览的 DC,从中制作一个内存 DC,然后将我的位图选择到其中。然后我做了一些大小调整,并将内存 dc bitblt 到真正的 dc。我猜 BitBlt 操作没有考虑 WPF 像素是硬件加速的事实,因此需要从图形硬件中获取。 GDI 中的所有东西都管理得很好,但是当没有 WPF 子窗口时,预览图像看起来很好。
我想知道是否有可能从本机 C++ 中获取 WPF 窗口的位图。然后我可以把它放到上一个预览的黑色区域。
【问题讨论】:
-
我在想,由于 WPF 是硬件加速的,所以应该有一种方法可以从 DirectX 获取像素。不知道我会怎么做...
-
是否有原生版本的 RenderTargetBitmap?
-
有人告诉我,也许最好的方法是创建一个 C++/CLI 互操作层,我可以从 C++ 调用它,它会为我返回一个 CBitmap。在这种情况下,我可以使用 RenderTargetBitmap 来获取 WPF 像素。
标签: wpf windows visual-c++ graphics bitmap