BitBlt绘制一个空白图像

时间:2010-11-16 01:31:31

标签: c++ mfc

我正在使用MFC,我正在尝试将图像绘制到屏幕上。我有以下OnDraw函数:

void CgraphicstestView::OnDraw(CDC* pDC)
{
 CgraphicstestDoc* pDoc = GetDocument();
 ASSERT_VALID(pDoc);
 if (!pDoc)
  return;

 m_Bitmap.LoadBitmap(IDB_WALL); // m_Bitmap is a CBitmap member of CgraphicstestView
                                   // IDB_WALL is a .png resource
 CDC dcMemory;
 dcMemory.CreateCompatibleDC(pDC);
 dcMemory.SelectObject(&m_Bitmap);
 pDC->BitBlt(10, 10, 32, 32, &dcMemory, 0, 0, SRCCOPY);
}

这将绘制到屏幕,但目标区域为空白。 BitBlt正在工作,因为将SRCCOPY更改为BLACKNESS会绘制一个黑色矩形。有人看到我错过的东西吗?

1 个答案:

答案 0 :(得分:1)

我不得不猜测问题是你的图像在某种程度上是无效的。因为我测试了它,它工作正常。 LoadBitmap返回一个HBITMAP,因此您可以像这样测试它:

HBITMAP hresult = m_Bitmap.LoadBitmap(IDB_WALL);
assert(hresult);