如果你使用BitBle复制位图,结果显示出来是黑色的...

        太悲催了,之前因为这个问题卡了一天,今天又卡了一个下午,上次解决的时候也不知道到底是怎么解决的,糊里糊涂就弄好了,于是欢喜快乐地去吃饭了,这次又是同样的问题,结果又浪费了时间,以后有问题还是要自己好好研究清楚才好。

       我要做的是,让一个DC获得了一个位图,然后另外一个DC从中截取某一小块,作为自己的图片,请各位看官看如下代码:

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);


运行代码之后,如果显示一下,就会发现,是黑的!它是黑的!黑的!截图是黑色的!也就是说BitBle根本没有起作用,没有复制!

为什么呢?。。。。。。。。。。。。。我也不知道啊!!!!

参考了百度百科的双缓冲技术绘图(http://baike.baidu.com/view/1149326.htm),也没有发现哪里不对啊!

但是!其实是有一个地方不一样的,就是

keyBmp.CreateCompatibleBitmap(&picDC,100,100);   

这一句,如果在开始的时候定义一个CDC *pDC = GetDC();

然后将上面的那句改为keyBmp.CreateCompatibleBitmap(pDC,100,100); 

就他喵的可以啦!不会是黑色的了!什么个原因啊,这个keyBmp是要显示在pDC上的,所以要跟pDC合适,但是我是要用picDC对keyBmp操作啊,难道不应该设置为跟picDC匹配吗?

       

你可能感兴趣的:(百度,null)