【问题标题】:Problems with ID2D1bitmapID2D1bitmap 的问题
【发布时间】:2014-07-21 16:33:08
【问题描述】:

我正在尝试根据 How to save ID2D1Bitmap to PNG file 将 ID2D1bitmap 保存到文件中

这可以在 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;

谁能解释一下这个问题?

【问题讨论】:

  • 你能提取一个最小但完整的例子来演示这个问题吗?就目前而言,信息太少,无法说明发生了什么。
  • 您是否调用 CoCreateInstance 来初始化指向实际 IWICImagingFactory 对象的指针?

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


【解决方案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

【讨论】:

  • 输出图像只是空的,带有白色,类似于该用户最初面临的问题 [链接] (stackoverflow.com/questions/11447489/…) 但是我已经调试了我的代码,并且与他不同的是,hr = S_OK 贯穿始终。似乎是什么问题?
  • 确保你有一个有效的pBitmap,它是从同一个 ID2D1Factory 对象创建的。
猜你喜欢
  • 2019-12-23
  • 2014-04-18
  • 2014-07-24
  • 2014-11-05
  • 2015-09-16
  • 2017-03-26
  • 1970-01-01
  • 2023-03-07
  • 2012-07-11
相关资源
最近更新 更多