我可以使用以下代码为IWICBitmap创建ID2D1RenderTarget ...
D2D1_FACTORY_OPTIONS options;
ZeroMemory(&options, sizeof(D2D1_FACTORY_OPTIONS));
#if defined(_DEBUG)
// If the project is in a debug build, enable Direct2D debugging via SDK Layers
options.debugLevel = D2D1_DEBUG_LEVEL_INFORMATION;
#endif
ThrowIfFailed(D2D1CreateFactory(
D2D1_FACTORY_TYPE_SINGLE_THREADED,
__uuidof(ID2D1Factory1),
&options,
&m_d2dFactory
));
D2D1_RENDER_TARGET_PROPERTIES props;
props = D2D1::RenderTargetProperties();
m_d2dFactory->CreateWicBitmapRenderTarget(m_pTheBitmap.Get(), &props, &m_target);
但是如果我想将ID2D1Effect应用于这个位图,我只有拥有ID2D1DeviceContext才能这样做。如何获取IWICBitmap的ID2D1DeviceContext?
答案 0 :(得分:4)
创建渲染目标后,需要对ID2D1DeviceContext进行QI。 e.g。
pWicRenderTarget->QueryInterface(
__uuidof(ID2D1DeviceContext),
reinterpret_cast<void**>(&pDC)
);
请记住,QI也会增加引用次数。