自己导入一个IDB_PICTURE显示不了。其他部分没问题,就是绘图出现问题。请教高手解答,万分感激。
在CGAMEWND中定义了:
RECT m_rcClient;
CBrush m_brsBG;
在类初始化中,
CGameWnd::CGameWnd()
{
m_bmp.LoadBitmap(IDB_PICTURE);
m_brsBG.CreateSolidBrush(COLOR_BLACK);
}
绘图函数:
void CGameWnd::OnPaint()
{
CPaintDC dc(this); // device context for painting
CDC dcMemory; // 内存设备
CBitmap bitmap;
CRect m_rcClient;
GetWindowRect(&m_rcClient);
// 与dc设备兼容
dcMemory.CreateCompatibleDC(&dc);
// 使得bitmap与实际显示的设备兼容
bitmap.CreateCompatibleBitmap(&dc, m_rcClient.Width(),m_rcClient.Height());
// 内存设备选择物件-位图
dcMemory.SelectObject(&bitmap);
//绘制背景框
dcMemory.FillRect(&m_rcClient, &m_brsBG);
//DrawWall((CPaintDC&) dcMemory);
for (int i = 0; i<M_NUM_HEIGHT; i++)
{
for (int j = 0; j<M_NUM_WIDTH; j++)
{
switch(m_cMap[i][j])
{
case MAP_WALL:
DrawWall((CPaintDC&) dcMemory, i, j);
}
}
}
// 将内存设备的内容拷贝到实际屏幕显示的设备
dc.BitBlt(0, 0, m_rcClient.Width(),m_rcClient.Height(), &dcMemory, 0, 0, SRCCOPY);
bitmap.DeleteObject();
}
void CGameWnd::DrawWall(CPaintDC &dc, int j , int i )
{
CDC dcMemory; //用作内存设备
dcMemory.SelectObject(m_bmp); //将内存设备与位图资源关联
dcMemory.CreateCompatibleDC(&dc); //使得这个设备与dc兼容
dc.StretchBlt(32*j, 32*i, 32, 32, &dcMemory, 0, 0, 32, 32, SRCCOPY);
}