互換性のあるレンダリングターゲットでGdiとDirect2Dの両方を使用してビットマップをレンダリングしようとしています。D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_GDI_COMPATIBLEオプションを使用して互換性のあるターゲットを作成し、次のようにします。
HDC hdc=NULL;
ID2D1GdiInteropRenderTarget *gdiTarget=NULL;
target->QueryInterface(__uuidof(ID2D1GdiInteropRenderTarget), (void**)&gdiTarget);
target.BeginDraw();
HRESULT hr=gdiTarget->GetDC(D2D1_DC_INITIALIZE_MODE_CLEAR, &hdc);
if(SUCCEEDED(hr))
{
/* Gdi drawing code(hdc)*/
gdiTarget->ReleaseDC(NULL);
}
/* Direct2D drawing code
target->EndDraw();
gdiTarget->Release();
しかし、このレンダリングメソッドを呼び出すたびに、多くのGDIオブジェクトのリークが発生するため、問題が発生しているようです。私もこれをやってみます:
HDC hdc=NULL;
ID2D1GdiInteropRenderTarget *gdiTarget=NULL;
target->QueryInterface(__uuidof(ID2D1GdiInteropRenderTarget), (void**)&gdiTarget);
target.BeginDraw();
HRESULT hr=gdiTarget->GetDC(D2D1_DC_INITIALIZE_MODE_CLEAR, &hdc);
if(SUCCEEDED(hr))
gdiTarget->ReleaseDC(NULL);
target->EndDraw();
gdiTarget->Release();
リークも発生します。ID2D1GdiInteropRenderTargetによって作成されたHDCでDeleteDC()またはReleaseDC()も試してみましたが、成功しません。
なにか提案を?前もって感謝します!