-2

我正在尝试根据此如何将 ID2D1Bitmap 保存到文件中如何将 ID2D1Bitmap 保存到 PNG 文件

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

我得到一个未处理的异常。(访问违规读数)在:

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

我已将 m_pWICFactory 和 m_pDirect2dFactory 声明为:

ID2D1Factory* m_pDirect2dFactory;
IWICImagingFactory *m_pWICFactory;

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

4

1 回答 1

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 中的 Windows 映像组件

于 2014-06-01T12:53:31.570 回答