一段绘图代码的问题
void CG_Spider2View::DrawBackGround(CDC* pDC)
{
BOOL static isfirst = TRUE;
if (isfirst)
{
//内存背景只画一次
CDC memdc;
BITMAP Bgbmp;
int cx = GetSystemMetrics(SM_CXSCREEN);//获取屏幕宽度
int cy = GetSystemMetrics(SM_CYSCREEN);//获取屏幕高度
m_BgBmp.GetBitmap(&Bgbmp);//获取原背景位图信息
memdc.CreateCompatibleDC(pDC);
memdc.SelectObject(&m_BgBmp);
m_BufBgDc.CreateCompatibleDC(pDC);
m_BufBgBmp.CreateCompatibleBitmap(pDC, cx, cy);
m_BufBgDc.SelectObject(&m_BufBgBmp);
//画内存背景
for (int i = 0; i <= cx / Bgbmp.bmWidth ; i++)
{
for (int j =0; j <= cy / Bgbmp.bmHeight ; j++)
{
m_BufBgDc.BitBlt(i * Bgbmp.bmWidth, j * Bgbmp.bmHeight,
Bgbmp.bmWidth, Bgbmp.bmHeight, &memdc, 0, 0, SRCCOPY);
}
}
isfirst = FALSE;
}
//将内存背景贴到前台
pDC->BitBlt(0, 0, m_ClientRect.Width(), m_ClientRect.Height(), &m_BufBgDc, 0, 0, SRCCOPY);
}
m_BgBmp已经载入过了,这段代码是别的程序里的,可以使用,但是到我的程序里就啥也不显示了,这个函数在OnDraw()里调用
[解决办法]
检查 i * Bgbmp.bmWidth, j * Bgbmp.bmHeight 是否合理