Direct2D/C++ - 使用位图进行屏幕外渲染

man*_*ena 7 c++ windows off-screen direct2d

我已经使用C++为Windows桌面应用程序实现了Direct2D应用程序,在模拟过程中我显示了图形结果(包括点,线和椭圆).只要模拟仍在运行,我就会保留一个缓冲区来存储模拟值,每个时间间隔我只是绘制值.现在,情况是,我直接画上Hwnd(ID2D1HwndRenderTarget)就像

pRenderTarget->BeginDraw() 

for(values of simulation results)
pRenderTarget->DrawLine(....)

pRenderTarget->EndDraw()
Run Code Online (Sandbox Code Playgroud)

现在我想使用Bitmap进行屏幕外渲染/绘图,因为我需要将位图作为图像存储在计算机上(相当于拍摄/捕获截图以存储模拟结果).在这种情况下我应该如何处理(有/没有Direct2D IWICBitmapFactory- 用于以后的屏幕捕获)?

  1. 创造ID2D1HwndRenderTarget pHwndRenderTarget- 使用pD2DFactory->CreateHwndRenderTarget()

  2. 创造ID2D1BitmapFactory pBitmapFactory- 使用pHwndRenderTarget->CreateCompatibleRenderTarget()

  3. 创建一个空位图ID2D1Bitmap ID2D1Bitmap pBmp- 使用pBitmapFactory->CreateBitmap()

  4. ?? 在这个位图上我应该画线吗?如果没有,我应该在哪里画线

  5. 最后,在哪个BeginDraw()和之间EndDraw(),我应该放置位图?

  6. 后来在某些时候,我会捕获这个位图的截图.没有IWICBitmapFactory我可以做到这一点?任何代码示例将不胜感激.