截屏到 Direct2D 兼容位图

Screen capture to Direct2D compatible bitmap

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

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

Direct2D 不提供此类功能。

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

  1. 正在获取 HBITMAP - 检查此答案:。您需要 HBITMAP hbDesktop = CreateCompatibleBitmap( hdc, width, height); 之前的部分 hbDesktop 变量将包含屏幕捕获位图的句柄。

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

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

    您必须更改为:

    wicFactory.CreateBitmapFromHBITMAP(hbDesktop, wicBitmap);