luyangever
luyangever
2016-04-20 05:50

MFC中bitblt拷贝的问题

  • 拷贝
  • mfc

我需要在mfc中拷贝原图再在相同的位置把图片粘贴回来,我自己写的小程序也能够正确做到,但是不知道为啥在我修改别人的程序时粘贴时就出了问题。
无操作原图:
图片说明
当我进行简单的自身拷贝自身时:
pDC->BitBlt(LpRect.left +100, LpRect.top, 200, 1688, pDC, LpRect.left, LpRect.top, SRCCOPY);
图片:
图片说明
但是当我复制后再粘贴时:
CDC curveDC;
CBitmap bitmap,*pOldBitmap;
curveDC.CreateCompatibleDC(rectinfo.testDC);
bitmap.CreateCompatibleBitmap(rectinfo.testDC,200,1688);
pOldBitmap = curveDC.SelectObject(&bitmap);

curveDC.BitBlt(0, 0, 200, 1688, pDC, LpRect.left, LpRect.top, SRCCOPY); 
pDC->BitBlt(LpRect.left +100, LpRect.top, 200, 1688,    &curveDC, 0,0, SRCCOPY);

图片说明
想不明白为什么会出现黑色框中多余的线条,是我复制的时候哪里出错了?
程序在http://share.weiyun.com/53c6af81c21f26b95d21027b0eda2c22

安装步骤为
解压后最好放在e盘根目录下
1 解压后运行Graphic.sln编译通过后,以管理员身份运行cmd,
根据具体目录注册ocx,例如 regsvr32 E:\GraphicOcx\Graphic\Debug\Graphic.ocx
2 运行test目录下的WindowsFormsApplication1.sln并编译成功
2 在Graphic的vs中,项目->属性->配置属性->调试->命令
导入test目录下的exe路径,例如E:\GraphicOcx\Test\WindowsFormsApplication1\
WindowsFormsApplication1\bin\Debug\WindowsFormsApplication1.exe
3 如果界面出现则表示运行成功。如果不成功提示模板错误等
则修改GraphicOcx\Graphic\Debug下的Graphic.ini中DataPath路径和TemplateName路径为自己的实际路径

我提问的代码在Curve.cpp的1100行左右

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

1条回答