MFC中将所画图像保存到图像文件

来源:互联网 发布:js两个数组去重复 编辑:程序博客网 时间:2024/06/10 07:47
void CmyPaintView::OnBmpSave() {         CClientDC dc(this);             CRect rect;          BOOL  showMsgTag;                  //是否要弹出”图像保存成功对话框"          GetClientRect(&rect);                  //获取画布大小         HBITMAP hbitmap = CreateCompatibleBitmap(dc, rect.right-rect.left, rect. bottom-rect.top);                                             //创建兼容位图         HDC hdc = CreateCompatibleDC(dc);      //创建兼容DC,以便将图像保存为不同的格式         HBITMAP hOldMap = (HBITMAP)SelectObject(hdc,hbitmap);                                         //将位图选入DC,并保存返回值          BitBlt(hdc,0,0,rect.right-rect.left,rect.bottom-rect.top,dc,0,0,SRCCOPY);                                         //将屏幕DC的图像复制到内存DC中          CImage image;         image.Attach(hbitmap);                //将位图转化为一般图像          if (!saveTag)                          //如果图像是第一次被写入,则打开对话框         {                   saveTag = TRUE;                   showMsgTag = TRUE;                   CString  strFilter = _T("位图文件(*.bmp)|*.bmp|JPEG 图像文件|*.jpg|                           GIF图像文件|*.gif|PNG图像文件|*.png|                           其他格式(*.*)|*.*||");                   CFileDialog dlg(FALSE,_T("bmp"),_T("iPaint1.bmp"),NULL,strFilter);                   if (dlg.DoModal() != IDOK)                            return;                    CString strFileName;          //如果用户没有指定文件扩展名,则为其添加一个                   CString strExtension;                   strFileName = dlg.m_ofn.lpstrFile;                   if (dlg.m_ofn.nFileExtension = 0)               //扩展名项目为0                   {                            switch (dlg.m_ofn.nFilterIndex)                            {                            case 1:                                     strExtension = "bmp";break;                            case 2:                                     strExtension = "jpg";break;                            case 3:                                     strExtension = "gif";break;                            case 4:                                     strExtension = "png";break;                            default:                                     break;                            }                            strFileName = strFileName + "." + strExtension;                     }                   saveFilePath = strFileName;     //saveFilePath为视类中的全局变量,类型为CString         }          else         {                   showMsgTag = FALSE;         }          //AfxMessageBox(saveFilePath);               //显示图像保存的全路径(包含文件名)         HRESULT hResult = image.Save(saveFilePath);     //保存图像         if (FAILED(hResult))         {                   MessageBox(_T("保存图像文件失败!"));         }         else         {                   if(showMsgTag)                            MessageBox(_T("文件保存成功!"));         }         image.Detach();         SelectObject(hdc,hOldMap);} 


 

原创粉丝点击