c++ - 截屏到 Direct2D 兼容位图

标签 c++ bitmap rendering screenshot direct2d

我需要在给定 HWND 句柄的情况下捕获窗口的屏幕并将捕获存储在 ID2D1Bitmap 对象中,以便通过我的渲染目标绘制此位图.

我怎样才能达到这个结果?

最佳答案

Direct2D 不提供此类功能。

一种可能的方法是,如果您首先通过 GDI (1) 捕获屏幕,然后从返回的位图句柄创建一个 ID2D1Bitmap (2)。

  1. 获取 HBITMAP - 检查此答案:https://stackoverflow.com/a/5164267/3962893 .您需要直到 HBITMAP hbDesktop = CreateCompatibleBitmap( hdc, width, height); hbDesktop 变量将包含屏幕捕获位图的句柄。

  2. HBITMAP 创建 ID2D1Bitmap - 检查这个答案:https://stackoverflow.com/a/27500938/3962893 .它将图标复制到 ID2D1Bitmap,但工作流程是相同的。除了:

    hIcon := SendMessage(句柄, WM_GETICON, ICON_BIG, 0); .... wicFactory.CreateBitmapFromHICON(hIcon, wicBitmap);

    您必须更改为:

    wicFactory.CreateBitmapFromHBITMAP(hbDesktop, wicBitmap);

关于c++ - 截屏到 Direct2D 兼容位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28798974/

相关文章:

c++ - 使用不同类型 boost program_options 值

c++ - 如何从另一个函数调用此 void 函数?

android - 在 ImageView 中获取以像素为单位的图像尺寸

java - 抛出 OutOfMemoryError 异常

CSS 样式表——IE 6/7 错误

javascript - 浏览器图像渲染

Java 应用程序 - AWT 渲染导致抗锯齿打开时文本损坏

c++ - boost::mpl::for_each 没有实例化

c++ - 将 ifstream 传递给 C++ 中的函数

actionscript-3 - AS3 : Resizing a sprite without resizing its BitmapFill (or its contents for that matter)?