在ondraw函数中,我使用了双缓存,代码是这样的:
CDC dc;
CBitmap bmp;
bmp.CreateCompatibleBitmap (pDC,100,100);
dc.CreateCompatibleDC (pDC);
dc.SelectObject (&bmp);
CBrush brush(RGB(255,255,255));
dc.FillRect(CRect(0,0,100,(100),&brush);
CPen pen,*oldpen;
pen.CreatePen (PS_SOLID  ,1,RGB(255,0,0));
oldpen=pDC->SelectObject (&pen);
dc.MoveTo (2,50);
dc.LineTo (100,50);
...............
pDC->BitBlt (0,0,100,100,&dc,0,0,SRCCOPY);
本来我希望画出来的线是红颜色的,但是为什么却是黑颜色的?????
为什么??

解决方案 »

  1.   

    memDC.FillSolidRect(0,0,rcClient.Width(),rcClient.Height(),RGB(255,255,255));
      

  2.   

    我已经先把背景刷为白色了啊
    CBrush brush(RGB(255,255,255));
    dc.FillRect(CRect(0,0,100,(100),&brush);
    和memDC.FillSolidRect(0,0,rcClient.Width(),rcClient.Height(),RGB(255,255,255));是一样的啊
    我也试了,结果还是黑色的!
      

  3.   

    选入Pen的时候用错对象了!! CDC dc;
    CBitmap bmp;
    bmp.CreateCompatibleBitmap (pDC,100,100);
    dc.CreateCompatibleDC (pDC);
    dc.SelectObject (&bmp);
    CBrush brush(RGB(255,255,255));
    dc.FillRect(CRect(0,0,100,100),&brush);         // bracks not match in your code
    CPen pen,*oldpen;
    pen.CreatePen (PS_SOLID  , 1,RGB(255,0,0));
    oldpen=dc.SelectObject (&pen);           // HERE IS THE PROBLEM
    dc.MoveTo (2,50);
    dc.LineTo (100,50);
    dc.SelectObject(oldpen);      // better to add this statement