屏幕截图到Direct2D兼容位图

时间:2015-03-01 20:56:31

标签: c++ bitmap rendering screenshot direct2d

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

我怎样才能获得这个结果?

1 个答案:

答案 0 :(得分:3)

Direct2D不提供此类功能。

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

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

  2. ID2D1Bitmap 创建HBITMAP - 请查看以下答案:https://stackoverflow.com/a/27500938/3962893。它将图标复制到ID2D1Bitmap,但工作流程完全相同。不同的是:

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

    你必须改为:

    wicFactory.CreateBitmapFromHBITMAP(hbDesktop, wicBitmap);