在mfc编程中,如何编程保存视图区为BMP格式的图像

在MFC编程中,做了一个单文档,视图区设置为512x512像素分辨率,并且用GDI在里面绘图,绘图后如何编程将视图区保存为bmp格式的图像呢?mfc中提供了保存这个菜单项,但是如何添加消息响应呢?请高手指点下
自己的QQ:179103967
感谢

第1个回答  2008-11-24
给你个函数参考一下:
把srcDC换成你要保存的窗口的DC就行:
HBITMAP CopyScreenToBitmap(LPRECT lpRect)
{

int m_xScreen = GetSystemMetrics(SM_CXSCREEN);
//获取y方向屏幕像素()
int m_yScreen = GetSystemMetrics(SM_CYSCREEN);

HDC hScrDC,hMemDC;
HBITMAP hBitmap,hOldBitmap;
int nX1,nX2,nY1,nY2;
int nWidth,nHeight;
if (IsRectEmpty(lpRect))
{
return FALSE;
}
//为屏幕创建设备描述表
hScrDC = CreateDC("DISPLAY",NULL,NULL,NULL);
//为屏幕设备描述表创建兼容的内存设备描述表
hMemDC = CreateCompatibleDC(hScrDC);
// 获得选定区域坐标
nX1 = lpRect->left;
nY1 = lpRect->top;
nX2 = lpRect->right;
nY2 = lpRect->bottom;
//确保选定区域是可见的
if (nX1 < 0)
nX1 = 0;
if (nY1 < 0)
nY1 = 0;
if (nX2 > m_xScreen)
nX2 = m_xScreen;
if (nY2 > m_yScreen)
nY2 = m_yScreen;
nWidth = nX2 - nX1;
nHeight = nY2 - nY1;
// 创建一个与屏幕设备描述表兼容的位图
hBitmap = CreateCompatibleBitmap(hScrDC,nWidth,nHeight);
// 把新位图选到内存设备描述表中
hOldBitmap = (HBITMAP)SelectObject(hMemDC,hBitmap);
// 把屏幕设备描述表拷贝到内存设备描述表中
BitBlt(hMemDC,0,0,nWidth,nHeight,hScrDC,nX1,nY1,SRCCOPY);
//得到屏幕位图的句柄
hBitmap = (HBITMAP)SelectObject(hMemDC,hOldBitmap);
//清除
DeleteDC(hScrDC);
DeleteDC(hMemDC);
return hBitmap;
}

在mfc编程中,如何编程保存视图区为BMP格式的图像
把srcDC换成你要保存的窗口的DC就行:HBITMAP CopyScreenToBitmap(LPRECT lpRect){ int m_xScreen = GetSystemMetrics(SM_CXSCREEN);\/\/获取y方向屏幕像素()int m_yScreen = GetSystemMetrics(SM_CYSCREEN);HDC hScrDC,hMemDC;HBITMAP hBitmap,hOldBitmap;int nX1,nX2,nY1,nY2;int nWidth,nHeig...

如何用MFC编写一个程序,获得整个屏幕的截图并保存为bmp格式?
代码 大概就是这样 有几个关键函数仔细一下,要是要完整代码呢留言 CDC memDC;CBitmap memBitmap,*pOldBitmap;CWindowDC dc(GetDesktopWindow());memDC.CreateCompatibleDC(&dc);int nWidth,nHeight;\/* nWidth=GetSystemMetrics(SM_CXSCREEN);nHeight=GetSystemMetrics(SM_CYSCREEN);*\/ CRect rect;Ge...

MFC单文档绘图,点击文件->保存,怎样可以保存为bmp格式
void CqimozuoyeaView::OnBaocun(){ \/\/ TODO: 在此添加命令处理程序代码 CImage bmp;CFileDialog saveDlg(TRUE, _T(".bmp"), _T(""), 6UL, _T("位图(*.bmp)"));saveDlg.DoModal();bmp.Save(saveDlg.GetPathName());} 可以试试这个 ...

vc++6.0MFC画图如何保存为bmp格式
VC6++不方便, 高于VC6版本可以用CImage, 很方便

mfc单文档绘图问题,怎么保存成bmp格式
绘图可以使用双缓冲,保存时使用GDI+把内存DC的内容保存为BMP格式即可,GDI+处理支持保存为多种格式的图像文件。

MFC中如何载入bmp和jpeg格式的图片,并作为文件背景
PSP是一台索尼推出的掌机,它可以通过安装模拟器来运行以上游戏。

MFC中如何载入bmp和jpeg格式的图片,并作为文件背景
步骤一:导入bmp文件:第二步:设置为背景:① 添加OnCtlColor消息响应函数:② 添加响应代码:HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){ HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);\/\/ TODO: Change any attributes of the DC here static CBrush gBr;...

vc\/mfc中bmp文件保存的问题
硬件设备无关的图像文件格式,使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。由于BMP文件格式是Windows环境中交换与图...

vc++在基于对话框的MFC中如何打开一个bmp图像,并将其值存储起来_百度知 ...
你先拖一个图片控件 然后image 那里联系你的bmp图片 但是储存 最好是存储路径

在使用mfc中载入bmp图像带,怎么做?
MFC里面新建CBitmap以后应该可以从中获得HBITMAP),然后从HBITMAP创建Graphics对象,用DrawImage方法把你这个图像带的一个部分画进去(DrawImae的参数里你可以指定要画哪个部分),完了调用一下Graphics的Flush方法。循环四次就把四个图像分开了,得到四个HBITMAP(或者也可以说四个CBitmap)

相似回答
大家正在搜