0

我有 MainScreen.cpp

void MainScreen::Show(D2DResources* pD2DResources)
{
    HRESULT hr = S_OK;

    ID2D1Bitmap* pBitmap=pD2DResources->GetpCurrentScreen();

    hr = pD2DResources->LoadBitmapFromFile(
        pD2DResources->GetpRT(),
        pD2DResources->GetpIWICIF(),
        L".\\Images\\MainScreen.jpg",
        0,
        0,
        &pBitmap
        );

    if(SUCCEEDED(hr))pD2DResources->DrawScreen();
}

在某些时候 MainScreen::Show() 函数被这样调用

MainScreen->Show(&d2DResources);

但是,似乎当 pD2DResources 在 MainScreen::Show() 函数中调用 DrawScreen() 时,存储在 &pBitmap 中的任何内容都没有保存。实际上,我得到了一个未处理的异常,并且当它发生时,应该收到 pBitmap 的值的 pCurrentScreen 是 0x00000000。

我应该怎么办?

4

1 回答 1

0

如您所知,LoadBitmapFromFile 函数失败
所以您应该检查 LoadBitmapFromFile 函数的参数

但是为什么将 pD2DResources->GetpCurrentScreen() 分配给 pBitmap?
下一行,pBitmap 将再次分配 LoadBitmapFromFile 函数。

此外,如果 MainScreen 的 Show 函数调用每一帧,那效率不高。
因为您不必每帧都加载位图。
并且应该释放 d2d 位图。

于 2013-03-30T15:45:44.343 回答