ID2D1Bitmap 保存为文件
参考 https://stackoverflow.com/questions/24035541/wrong-render-target-id2d1bitmap
EndDraw的时候总是报 错误的渲染器目标 错误;
原因是ID2D1Bitmap不是同一个工厂创建的;
解决办法是:创建渲染器的时候统一下参数:
老外代码:
auto rtProps = D2D1::RenderTargetProperties();
rtProps.type = D2D1_RENDER_TARGET_TYPE_SOFTWARE;
rtProps.usage = D2D1_RENDER_TARGET_USAGE_GDI_COMPATIBLE;
我的代码:
D2D1_RENDER_TARGET_PROPERTIES rtProps = D2D1::RenderTargetProperties();
rtProps.type = D2D1_RENDER_TARGET_TYPE_SOFTWARE;
rtProps.usage = D2D1_RENDER_TARGET_USAGE_GDI_COMPATIBLE;
hr = dxfactory->CreateWicBitmapRenderTarget(pWICBitmap, rtProps, &pRT);
D2D1_RENDER_TARGET_PROPERTIES rtProps = D2D1::RenderTargetProperties();
rtProps.type = D2D1_RENDER_TARGET_TYPE_SOFTWARE;
rtProps.usage = D2D1_RENDER_TARGET_USAGE_GDI_COMPATIBLE;
hr = mDXRender.dxfactory->CreateHwndRenderTarget(rtProps, D2D1::HwndRenderTargetProperties(mHwnd, size), &mDXRender.render);
注意两个渲染目标要是有同样的D2D1_RENDER_TARGET_PROPERTIES 创建;
CreateWicBitmapRenderTarget CreateHwndRenderTarget