ID2D1bitmap的问题

时间:2014-06-01 11:58:39

标签: c++ visual-c++ mfc direct2d wic

我试图根据此How to save ID2D1Bitmap to PNG file

将ID2D1位图保存到文件中

这可以在Windows 7中完成吗?没有任何平台更新?

我收到一个未处理的异常。 (Aceess违规阅读):

if (SUCCEEDED(hr))
{
    hr = m_pWICFactory->CreateBitmap(
        sc_bitmapWidth,
        sc_bitmapHeight,
        GUID_WICPixelFormat32bppPBGRA,
        WICBitmapCacheOnLoad,
        &pWICBitmap
        );
}

我已宣布m_pWICFactory& m_pDirect2dFactory as:

ID2D1Factory* m_pDirect2dFactory;
IWICImagingFactory *m_pWICFactory;

有人可以解释我的问题吗?

1 个答案:

答案 0 :(得分:1)

我非常确定您有空m_pWICFactory(因为您链接的帖子并不包含该代码)。您是否在使用前首先将其初始化?它通常使用类似的成员函数完成,并在执行需要工厂的其他操作之前调用。

HRESULT CreateDeviceIndependentResources()
{
    HRESULT hr;

    // Create a Direct2D factory.
    hr = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &m_pDirect2dFactory);

    if (SUCCEEDED(hr))
    {
        // Create a WIC factory.
        CoCreateInstance(
            CLSID_WICImagingFactory,
            NULL,
            CLSCTX_INPROC_SERVER,
            IID_IWICImagingFactory,
            reinterpret_cast<void **>(&m_pWICFactory)
            );
    }
    return hr;
}

有关详细信息,请参阅MSDN中的Using the Windows Imaging Component