3

次のコードを使用して、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を取得するにはどうすればよいですか?

4

1 に答える 1

5

レンダー ターゲットを作成したら、ID2D1DeviceContext に対して QI を実行する必要があります。例えば

pWicRenderTarget->QueryInterface(
                      __uuidof(ID2D1DeviceContext), 
                      reinterpret_cast<void**>(&pDC)
                      );

QI によって参照カウントも増加していることに注意してください。

于 2012-09-10T10:23:22.513 に答える