Вы можете использовать ID2D1Factory :: CreateWICBitmapRenderTarget для рендеринга на битовой карте WIC, и затем вы можете читать в пикселях из растрового изображения WIC. Что-то вдоль этих линий:
ID2D1Factory* d2dfac = 0;
D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &d2dfac);
IWICImagingFactory* wicfac = 0;
CoCreateInstance(CLSID_WICImagingFactory, 0, CLSCTX_INPROC_SERVER,
IID_IWICImagingFactory, (void**)&wicfac);
IWICBitmap* bmp = 0;
wicfac->CreateBitmap(width, height,
GUID_WICPixelFormat32bppPBGRA,
WICBitmapCacheOnLoad, &bmp);
ID2D1RenderTarget* render = 0;
d2dfac->CreateWicBitmapRenderTarget(
bmp,
D2D1::RenderTargetProperties(D2D1_RENDER_TARGET_TYPE_DEFAULT,
D2D1::PixelFormat(DXGI_FORMAT_B8G8R8A8_UNORM,
D2D1_ALPHA_MODE_PREMULTIPLIED),
0.f, 0.f,
D2D1_RENDER_TARGET_USAGE_GDI_COMPATIBLE),
&render);
render->BeginDraw();
// ... Draw on the render target ...
render->EndDraw(0, 0);
WICRect rect = { 0, 0, width, height };
IWICBitmapLock* lock = 0;
bmp->Lock(&rect, WICBitmapLockRead, &lock);
BYTE* data = 0;
UINT sz = 0;
lock->GetDataPointer(&sz, &data);
возможно дубликат [Как получить пиксельные данные из Direct2D] (http://stackoverflow.com/questions/17513385/how-to-retrieve-pixel-data-from-direct2d) –