如何获得Bitmap的bits

cattycat 2009-07-26 12:35:46

我是打开一个bmp文件,画在界面上,然后通过画矩形选择一个区域,想把这块区域截图截取下来,先保存到内存中一个二进制数组中,然后画到另一个地方。下面是截取的代码:

CClientDC dc(this);
CDC memDC;
CRect rc(oldPt,newPt);

memDC.CreateCompatibleDC(&dc);
int Width = rc.Width();
int Height = rc.Height();
CBitmap bm;

bm.CreateCompatibleBitmap(&dc, Width, Height);
CBitmap* pOld = memDC.SelectObject(&bm);
memDC.BitBlt(0, 0, Width, Height, &dc, 0, 0, SRCCOPY);
memDC.SelectObject(pOld);
BITMAP btm;
bm.GetBitmap(&btm);
DWORD size = btm.bmWidthBytes * btm.bmHeight;
BYTE* bytesImage=new BYTE[size];

bm.GetBitmapBits(size,bytesImage);

然后我在另一个地方画出来的图像是线条,跟原图选的区域根本就不一样我用GetDIBits获得的图示灰色的,什么都没有。
请教大侠该如何获取位信息呢?这个问题怎么解决呢,谢谢!
能解决的话,可以加分,谢谢!

...全文
79 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
softist 2009-07-26
  • 打赏
  • 举报
回复
删掉,或往后挪一挪。
memDC.SelectObject(pOld);
cattycat 2009-07-26
  • 打赏
  • 举报
回复
补充一下,我这里说的位信息就像bitmap文件里除了文件头信息后面的数据。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧