CRect rect(m_StartPoint.x,m_StartPoint.y,m_EndPoint.x,m_EndPoint.y);
//ClientToScreen(rect);
m_leftdown =0;
Invalidate(FALSE);//更新界面
CClientDC dc(this);
/* HBITMAP bitmap =CreateCompatibleBitmap(dc.m_hDC,rect.Width(),rect.Height());*/
//复制矩形内容
CDC bmemDC;
bmemDC.CreateCompatibleDC(GetDC());
CBitmap bmprect;
bmprect.CreateCompatibleBitmap(GetDC(),rect.Width(),rect.Height());
bmemDC.SelectObject(&bmprect);
/////////////////////////////////////////////////////////////////////////////////////////
BITMAP mbitmap;
//将位图信息填充到一个缓冲区内
bmprect.GetBitmap(&mbitmap);
bmemDC.BitBlt(0,0,mbitmap.bmWidth,mbitmap.bmHeight,GetDC(),m_StartPoint.x,m_StartPoint.y,SRCCOPY);
BITMAPINFOHEADER bih = {0};//位图信息头
bih.biBitCount = mbitmap.bmBitsPixel;//每个像素字节大小
bih.biCompression = BI_RGB;
bih.biHeight = mbitmap.bmHeight;//高度
bih.biPlanes = 1;
bih.biSize = sizeof(BITMAPINFOHEADER);
bih.biSizeImage = mbitmap.bmWidthBytes * mbitmap.bmHeight;//图像数据大小
bih.biWidth = mbitmap.bmWidth;//宽度
BITMAPFILEHEADER bfh = {0};//位图文件头
bfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);//到位图数据的偏移量
bfh.bfSize = bfh.bfOffBits + mbitmap.bmWidthBytes * mbitmap.bmHeight;//文件总的大小
bfh.bfType = (WORD)0x4d42;
byte * p = new byte[mbitmap.bmWidthBytes * mbitmap.bmHeight];//申请内存保存位图数据
GetDIBits(bmemDC.m_hDC, (HBITMAP) bmprect.m_hObject, 0, rect.Height(), p,
(LPBITMAPINFO) &bih, DIB_RGB_COLORS);//获取位图数据
////////////////////////////////////////////////////////////////////////////////////////
FILE *fp = fopen("bitfile.bmp", "w+b");
fwrite(&bfh, 1, sizeof(BITMAPFILEHEADER), fp);//写入位图文件头
fwrite(&bih, 1, sizeof(BITMAPINFOHEADER), fp);//写入位图信息头
fwrite(p, 1, mbitmap.bmWidthBytes * mbitmap.bmHeight, fp);//写入位图数据
fclose(fp);
不知道怎么办?各位大神帮帮忙
小白万分感激,不要沉啊,拜托了,麻烦各位了,谢谢
大神们,帮帮小白,编写的不知道错哪了,基于MFC,编写一个抓图的程序,开发工具为VC++6.0。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
悬赏问题
- ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
- ¥15 如何在scanpy上做差异基因和通路富集?
- ¥20 关于#硬件工程#的问题,请各位专家解答!
- ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
- ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
- ¥30 截图中的mathematics程序转换成matlab
- ¥15 动力学代码报错,维度不匹配
- ¥15 Power query添加列问题
- ¥50 Kubernetes&Fission&Eleasticsearch
- ¥15 報錯:Person is not mapped,如何解決?