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

相关文章

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

在Java中将XLS转换为XLSX的实现方案

《在Java中将XLS转换为XLSX的实现方案》在本文中,我们将探讨传统ExcelXLS格式与现代XLSX格式的结构差异,并为Java开发者提供转换方案,通过了解底层原理、性能优势及实用工具,您将掌握... 目录为什么升级XLS到XLSX值得投入?实际转换过程解析推荐技术方案对比Apache POI实现编程

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

c/c++的opencv图像金字塔缩放实现

《c/c++的opencv图像金字塔缩放实现》本文主要介绍了c/c++的opencv图像金字塔缩放实现,通过对原始图像进行连续的下采样或上采样操作,生成一系列不同分辨率的图像,具有一定的参考价值,感兴... 目录图像金字塔简介图像下采样 (cv::pyrDown)图像上采样 (cv::pyrUp)C++ O

Python+wxPython构建图像编辑器

《Python+wxPython构建图像编辑器》图像编辑应用是学习GUI编程和图像处理的绝佳项目,本教程中,我们将使用wxPython,一个跨平台的PythonGUI工具包,构建一个简单的... 目录引言环境设置创建主窗口加载和显示图像实现绘制工具矩形绘制箭头绘制文字绘制临时绘制处理缩放和旋转缩放旋转保存编

python+OpenCV反投影图像的实现示例详解

《python+OpenCV反投影图像的实现示例详解》:本文主要介绍python+OpenCV反投影图像的实现示例详解,本文通过实例代码图文并茂的形式给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前言二、什么是反投影图像三、反投影图像的概念四、反向投影的工作原理一、利用反向投影backproj

使用Python实现图像LBP特征提取的操作方法

《使用Python实现图像LBP特征提取的操作方法》LBP特征叫做局部二值模式,常用于纹理特征提取,并在纹理分类中具有较强的区分能力,本文给大家介绍了如何使用Python实现图像LBP特征提取的操作方... 目录一、LBP特征介绍二、LBP特征描述三、一些改进版本的LBP1.圆形LBP算子2.旋转不变的LB

OpenCV图像形态学的实现

《OpenCV图像形态学的实现》本文主要介绍了OpenCV图像形态学的实现,包括腐蚀、膨胀、开运算、闭运算、梯度运算、顶帽运算和黑帽运算,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起... 目录一、图像形态学简介二、腐蚀(Erosion)1. 原理2. OpenCV 实现三、膨胀China编程(

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像