读书人

Timer中用BitBlt()画不出图是咋回事

发布时间: 2013-10-13 14:03:53 作者: rapoo

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都没空间,无法画图的。

读书人网 >C++

热点推荐