//1、创建背景DC(缓冲DC)
CBitmap bmpBK;
bmpBK.CreateCompatibleBitmap(pDC, 400, 500);
CDC dcDest;
dcDest.CreateCompatibleDC(pDC)
dcDest.SelectObject(&bmpBK);//2、临时绘图DC
CDC dcTemp;
dcTemp.CreateCompatibleDC(pDC)//3、在临时DC上绘图
CBrush br(RGB(255,255,255));
dcTemp.FillRect(rectPatse, &br);//4、把临时绘图DC贴到背景DC
pDestDC->BitBlt(100, 120, 50, 50, &dcTemp, 0,0, SRCCOPY);//5、pDestDC->FillRect(rectPatse, &br);//6、把背景DC贴到设备DC
pDC->BitBlt(0, 0, 400, 500, pDestDC, 0, 0, SRCCOPY);这样绘图是失败的,DC创建了,但是没绘制上去。
如果把2、3步替换为4,那么可以绘制上去。
或者把3步写为dcTemp.SelectObject(bmp),加载图片。那么图片也是可以贴上去的。
这是为什么?

解决方案 »

  1.   

    dcTemp 没有位图做画布
      

  2.   

    你没有为临时DC选进一个兼容位图;兼容DC创建后默认只有一个一像素宽高的单色位图,这张图当然不能满足你的绘制要求了;你在第二步也为dcTemp创建并选进一张兼容位图就可以了;
      

  3.   

    说的对
    一个dc要一个bitmap对应,画的地方
      

  4.   

    1.看你的意思像是三缓冲吧,dcTemp也要兼容位图和dc
    2.不用dcTemp了,只用dcDest
      

  5.   

    http://blog.csdn.net/oldmtn/article/details/7190663