Timer中用BitBlt()画不出图,是怎么回事?
在timer中用BitBlt画图,没有显示,感觉后台的图片没有被copy到显示器上
void CTabPage2::OnTimer(UINT nIDEvent)
{
CDC *pDC;
pDC=GetDlgItem(IDC_Bmp)->GetDC(); //取得位图控件DC
CDC bDC; //创建后—C指针
bDC.CreateCompatibleDC(pDC);
//Draw BMP Position
CRgn rgn;
rgn.CreateRectRgn(0,0,900,380); //创建一个矩形裁剪区,对象为rgn
bDC.SelectClipRgn(&rgn);//选择该裁剪区,绘图在此裁剪区中完成,超出部分不显示
//*******************************************
//画背景
CBrush brush(RGB(128,128,128));
CBrush *old = bDC.SelectObject(&brush);
CRect rect;
rect.SetRect(0,0,900,380);
bDC.Rectangle(rect);
bDC.SelectObject(old);
//Draw Circle use brush
CBrush brush1(RGB(255,0,0)); //red
old = bDC.SelectObject(&brush1);
CRect cRect;
cRect.SetRect(i,j,i,j); //圆心是(i,j),i,j根据外部接口接受数据变化
cRect.InflateRect(50,50); //半径是50
bDC.Ellipse(cRect);
bDC.SelectObject(old);
pDC->BitBlt(0,0,900, 380, &bDC, 0, 0, SRCCOPY); //在位图控件中显示
}
执行后位图控件上没有任何显示,这是怎么回事,请大侠指点,谢谢!
[解决办法]
bDC.CreateCompatibleDC(pDC);
内存DC要加载内存位图的,不然内存DC都没空间,无法画图的。