我需要在给定HWND
句柄的情况下捕获窗口的屏幕并将捕获存储在ID2D1Bitmap
对象中,以便通过渲染目标绘制此位图。
我怎样才能获得这个结果?
答案 0 :(得分:3)
Direct2D不提供此类功能。
可能的方法是首先通过GDI
(1)捕获屏幕,然后从返回的位图句柄(2)创建ID2D1Bitmap
。
获取HBITMAP
- 请检查此答案:https://stackoverflow.com/a/5164267/3962893。您需要该部件,直到HBITMAP hbDesktop = CreateCompatibleBitmap( hdc, width, height);
hbDesktop
变量将包含屏幕捕获位图的句柄。
从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);