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

2023-12-15 13:08

本文主要是介绍MFC中将所画图像保存到图像文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

[cpp]  view plain copy
  1. void CmyPaintView::OnBmpSave()     
  2. {    
  3.          CClientDC dc(this);    
  4.          CRect rect;    
  5.          BOOL  showMsgTag;                  //是否要弹出”图像保存成功对话框"     
  6.          GetClientRect(&rect);                  //获取画布大小    
  7.          HBITMAP hbitmap = CreateCompatibleBitmap(dc, rect.right-rect.left, rect. bottom-rect.top);       //创建兼容位图  
  8.   
  9.          HDC hdc = CreateCompatibleDC(dc);      //创建兼容DC,以便将图像保存为不同的格式    
  10.          HBITMAP hOldMap = (HBITMAP)SelectObject(hdc,hbitmap);  //将位图选入DC,并保存返回值   
  11.   
  12.          BitBlt(hdc,0,0,rect.right-rect.left,rect.bottom-rect.top,dc,0,0,SRCCOPY);        //将屏幕DC的图像复制到内存DC中    
  13.    
  14.          CImage image;    
  15.          image.Attach(hbitmap);                //将位图转化为一般图像     
  16.   
  17.          if (!saveTag)                          //如果图像是第一次被写入,则打开对话框   
  18.          {  
  19.                    saveTag = TRUE;   
  20.                    showMsgTag = TRUE;   
  21.                    CString  strFilter = _T("位图文件(*.bmp)|*.bmp|JPEG 图像文件|*.jpg|
  22.                                            GIF图像文件|*.gif|PNG图像文件|*.png|其他格式*.*)|*.*||");  
  23.   
  24.                    CFileDialog dlg(FALSE,_T("bmp"),_T("iPaint1.bmp"),NULL,strFilter);  
  25.   
  26.                    if (dlg.DoModal() != IDOK)    
  27.                             return;    
  28.                    CString strFileName;          //如果用户没有指定文件扩展名,则为其添加一个  
  29.   
  30.                    CString strExtension;  
  31.   
  32.                    strFileName = dlg.m_ofn.lpstrFile;  
  33.   
  34.                    if (dlg.m_ofn.nFileExtension = 0)               //扩展名项目为0    
  35.                    {    
  36.                             switch (dlg.m_ofn.nFilterIndex)    
  37.                             {    
  38.                             case 1:    
  39.                                      strExtension = "bmp";break;    
  40.                             case 2:    
  41.                                      strExtension = "jpg";break;    
  42.                             case 3:    
  43.                                      strExtension = "gif";break;    
  44.                             case 4:    
  45.                                      strExtension = "png";break;    
  46.                             default:    
  47.                                      break;    
  48.                             }    
  49.                             strFileName = strFileName + "." + strExtension;    
  50.                    }    
  51.                    saveFilePath = strFileName;     //saveFilePath为视类中的全局变量,类型为CString    
  52.          }     
  53.          else    
  54.          {    
  55.                    showMsgTag = FALSE;    
  56.          }    
  57.          //AfxMessageBox(saveFilePath);               //显示图像保存的全路径(包含文件名)    
  58.          HRESULT hResult = image.Save(saveFilePath);     //保存图像    
  59.          if (FAILED(hResult))    
  60.          {    
  61.                    MessageBox(_T("保存图像文件失败!"));    
  62.          }    
  63.          else    
  64.          {    
  65.                    if(showMsgTag)    
  66.                             MessageBox(_T("文件保存成功!"));    
  67.          }    
  68.          image.Detach();    
  69.          SelectObject(hdc,hOldMap);    
  70. }  

这篇关于MFC中将所画图像保存到图像文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/496556

相关文章

基于WinForm+Halcon实现图像缩放与交互功能

《基于WinForm+Halcon实现图像缩放与交互功能》本文主要讲述在WinForm中结合Halcon实现图像缩放、平移及实时显示灰度值等交互功能,包括初始化窗口的不同方式,以及通过特定事件添加相应... 目录前言初始化窗口添加图像缩放功能添加图像平移功能添加实时显示灰度值功能示例代码总结最后前言本文将

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

Verybot之OpenCV应用一:安装与图像采集测试

在Verybot上安装OpenCV是很简单的,只需要执行:         sudo apt-get update         sudo apt-get install libopencv-dev         sudo apt-get install python-opencv         下面就对安装好的OpenCV进行一下测试,编写一个通过USB摄像头采

MFC中Spin Control控件使用,同时数据在Edit Control中显示

实现mfc spin control 上下滚动,只需捕捉spin control 的 UDN_DELTAPOD 消息,如下:  OnDeltaposSpin1(NMHDR *pNMHDR, LRESULT *pResult) {  LPNMUPDOWN pNMUpDown = reinterpret_cast(pNMHDR);  // TODO: 在此添加控件通知处理程序代码    if

控制台和MFC中内存泄露工具vld的使用

最近想检测下项目中内存泄露的情况,选中了vld这款。在查找使用方法的时候,大都是控制台下的示例,添加到main函数所在的源文件上。换成MFC就纠结了,不知道添加到哪里去。本文记录控制台和MFC中的使用vld过程。    vld资源:    1)、大家可以移步下边的网址下载:     http://vld.codeplex.com/releases/view/82311    2

MFC中App,Doc,MainFrame,View各指针的互相获取

纸上得来终觉浅,为了熟悉获取方法,我建了个SDI。 首先说明这四个类的执行顺序是App->Doc->Main->View 另外添加CDialog类获得各个指针的方法。 多文档的获取有点小区别,有时间也总结一下。 //  App void CSDIApp::OnApp() {      //  App      //  Doc     CDocument *pD

PNG透明背景按钮的实现(MFC)

问题描述: 当前要在对话框上添加一个以两个PNG图片作为背景的按钮,PNG图的背景是透明的,按钮也要做出相同的透明效果。并且鼠标不在按钮上时,按钮显示"bg1.png";鼠标移动到按钮上时,按钮显示"bg2.png" 开发环境为VS2010。 解决办法: 使用GDI+库装载PNG图片,并使用MFC Button Control和CMFCButton类结合,调用CMFCButton

下载/保存/读取 文件,并转成流输出

最近对文件的操作又熟悉了下;现在记载下来:学习在于 坚持!!!不以细小而不为。 实现的是:文件的下载、文件的保存到SD卡、文件的读取输出String 类型、最后是文件转换成流输出;一整套够用了; 重点: 1:   操作网络要记得开线程; 2:更新网络获取的数据 切记用Handler机制; 3:注意代码的可读性(这里面只是保存到SD卡,在项目中切记要对SD卡的有无做判断,然后再获取路径!)

【python计算机视觉编程——7.图像搜索】

python计算机视觉编程——7.图像搜索 7.图像搜索7.1 基于内容的图像检索(CBIR)从文本挖掘中获取灵感——矢量空间模型(BOW表示模型)7.2 视觉单词**思想****特征提取**: 创建词汇7.3 图像索引7.3.1 建立数据库7.3.2 添加图像 7.4 在数据库中搜索图像7.4.1 利用索引获取获选图像7.4.2 用一幅图像进行查询7.4.3 确定对比基准并绘制结果 7.

FFmpeg系列-视频解码后保存帧图片为ppm

在正常开发中遇到花屏时怎么处理呢?可以把解码后的数据直接保存成帧图片保存起来,然后直接看图片有没有花屏来排除是否是显示的问题,如果花屏,则代表显示无问题,如果图片中没有花屏,则可以往显示的方向去排查了。 void saveFrame(AVFrame* pFrame, int width, int height, int iFrame){FILE *pFile;char szFilename[