首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-10-13 
Timer中用BitBlt()画不出图,是怎么回事?在timer中用BitBlt画图,没有显示,感觉后台的图片没有被copy到显示

Timer中用BitBlt()画不出图,是怎么回事?
在timer中用BitBlt画图,没有显示,感觉后台的图片没有被copy到显示器上
void CTabPage2::OnTimer(UINT nIDEvent) 
{
        CDC *pDC;
pDC=GetDlgItem(IDC_Bmp)->GetDC();       //取得位图控件DC

CDC bDC;  //创建后台DC指针

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

热点排行