屏幕捕获到Direct2D兼容位图

Screen capture to Direct2D compatible bitmap

本文关键字:位图 Direct2D 屏幕      更新时间:2023-10-16

我需要捕获给定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(Handle, WM_GETICON, ICON_BIG, 0); .... wicFactory.CreateBitmapFromHICON(hIcon, wicBitmap);

    您必须更改为:

    wicFactory.CreateBitmapFromHBITMAP(hbDesktop, wicBitmap);