¿Cómo crear ID2D1DeviceContext para IWICBitmap? (Para la aplicación Metro en C++)

Puedo crear un ID2D1RenderTarget para un IWICBitmap usando el siguiente código...

    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);

Pero si quiero aplicar ID2D1Effect a este mapa de bits, solo puedo hacerlo si tengo ID2D1DeviceContext. ¿Cómo obtengo un ID2D1DeviceContext para un IWICBitmap?

preguntado el 27 de julio de 12 a las 06:07

1 Respuestas

Una vez que haya creado el destino de renderizado, debe enviar QI al ID2D1DeviceContext. p.ej

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

Recuerde que el QI también aumenta el número de referencias.

Respondido 26 Abr '15, 11:04

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.