答案 0 :(得分:0)
这可能不是确切的答案..但可以作为指导。
D2D1Factory* pD2DFactory = NULL;
ID2D1HwndRenderTarget* pD2DRenderTarget = NULL;
ID2D1DCRenderTarget* pD2DDCRenderTarget=NULL;
ID2D1Bitmap* pD2DBitmap = NULL;
D2D1CreateFactory(D2D1_FACTORY_TYPE_MULTI_THREADED,&pD2DFactory);
RECT rc = {dx,dy,dx+dw,dy+dh};
D2D1_RENDER_TARGET_PROPERTIES props = D2D1::RenderTargetProperties(
D2D1_RENDER_TARGET_TYPE_DEFAULT,
D2D1::PixelFormat(DXGI_FORMAT_B8G8R8A8_UNORM,D2D1_ALPHA_MODE_IGNORE),
0,0, D2D1_RENDER_TARGET_USAGE_NONE, D2D1_FEATURE_LEVEL_DEFAULT);
pD2DFactory->CreateDCRenderTarget(&props,&pD2DDCRenderTarget);
pD2DDCRenderTarget->BindDC(hDC,&rc);
pD2DDCRenderTarget->CreateBitmap (D2D1::SizeU(sw,sh),(void*)p_bmp,pitch,
D2D1::BitmapProperties(D2D1::PixelFormat(DXGI_FORMAT_B8G8R8A8_UNORM,D2D1_ALPHA_MODE_IGNORE)),
&pD2DBitmap);
pD2DDCRenderTarget->BeginDraw();
pD2DDCRenderTarget->DrawBitmap(pD2DBitmap,
D2D1::RectF((FLOAT)dx,(FLOAT)dy,(FLOAT)dw,(FLOAT)dh),1.0,D2D1_BITMAP_INTERPOLATION_MODE_LINEAR,
D2D1::RectF((FLOAT)sx,(FLOAT)sy,(FLOAT)sw,(FLOAT)sh));
pD2DDCRenderTarget->EndDraw();
SafeRelease(&pD2DBitmap);
SafeRelease(&pD2DDCRenderTarget);
SafeRelease(&pD2DFactory);