现在的位置: 首页 > 综合 > 正文

使用BitBlt复制位图,出现显示黑色块的问题

2013年05月24日 ⁄ 综合 ⁄ 共 533字 ⁄ 字号 评论关闭

我遇到这个问题两三次了,前面都是放着或者一不小心就好了大笑。今天我又遇到了,这此让我找到了问题的原因,主要还是创建DC对应的CBitmap是出了一个很小的问题。

 CDC bkDC;

 bkDC.CreateCompatibleDC (NULL);
 CDC picDC;
 picDC.CreateCompatibleDC(NULL);
 CBitmap keyBmp;
 bkDC.SelectObject(bkBmp); //这里的bkBmp是指向一个已经存好的图片

 //在背景图中根据矩形框进行截图,存入keyBmp中
  keyBmp.CreateCompatibleBitmap(&picDC,100,100);
  picDC.SelectObject(&keyBmp);
  picDC.BitBlt(0,0,100,100,&bkDC,0,0,SRCCOPY);

像上面这段代码,假如我们把创建位图的那句代码改下就会出现问题

keyBmp.CreateCompatibleBitmap(&picDC,100,100);改成keyBmp.CreateCompatibleBitmap(&pDC,100,100);

这个时候如果用BitBlt就会出现黑块的问题,所以我们创建兼容位图的时候要注意位图是与那个句柄兼容的

抱歉!评论已关闭.