资源描述:
《使用CImage类处理数字图像-续.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、CImage类图像应用中,DDB主要用于显示图像和生成画刷;而DIB主要用于保存图像以及图像处理中图像数据的存取。简言之,DDB适于生成图像,DIB适于获取和保存图像数据。因此,在图像处理应用中主要使用后者。16位系统中,DIB的建立很复杂,Win32中引入了DIBSECTION结构消除了DDB与DIB的差异,它兼具两者的功能。新增的3个函数CreateDIBSection、GetDIBColorTable与SetDIBColorTable简化了DIB数据的操作,它们与功能得到加强的位图转换函数BitBlt
2、相结合就足以满足图像处理的底层要求。同时,建立的DIBSECTION对象支持Windows编程中的所有图像功能。这些优点可在CImage类的应用中体现出来。CImage类的引入在VC++中,有2个类库可以使用。其中MFC用来支持建立应用程序,ATL用来建立组件和服务。在VC++编程中,通常只选其中一个。但从VC++.NET开始在这两个类库之间有了一些共享类,CImage就是其中之一。CImage在MFC类库的派生体系中不属于绘图工具类,但功能相同。它提供了对DIBSECTION位图的支持,包括读入和保存BM
3、P、JPEG、GIF、TIF、PNG等格式图像的能力。CImage类的应用CImage类可以直接在MFC或ATL中使用。在使用CImage创建一个项目时,必须包含头文件atlimage.h,这个文件必须在包含CString类定义的文件之后。一个最简单的方法是在项目中的stdafx.h文件的末尾添加下列包含语句://stdafx.h//原来的文件内容…/#includeCImage包含了自己的设备环境句柄,这是它与CBitmap类在除了数据格式外的另一个主要区别。因此,可以对CImag
4、e类对象直接操作,从而省略了将图像插入一个兼容的设备环境的过程。成员。。。。请查阅MSDN例题1ShowImage1、新建一个单文档的应用程序,项目名称为ShowBitmap2、为CShowBitmapView类添加下述成员变量和成员函数:其中CImagem_MyImage需要头文件"atlimage.h"的支持,或者你可以用向导来加这个变量,那么头文件会自动添加的,我们这里手动在CShowBitmapView.h中加入#include"atlimage.h",一定要记得加成员定义public:CStrin
5、gstrPicPath; //打开的图片文件文件名CStringextname; //打开的图片文件的扩展名CBitmapm_bitmap; //创建位图对象CImagem_MyImage; //用于读取与显示jpg等格式的图像文件voidShowBitmap(CDC*pDC,CStringstrPicPath); //用来显示指定位图的函数voidShowPic(CDC*pDC,CStringpicName);//JPG等图片显示函数为ID_FILE_OPEN消息添加响应函数voidC
6、ShowBitmapView::OnFileOpen(){ //CFileDialogdlg(TRUE,_T("BMP"),_T("*.BMP"),OFN_HIDEREADONLY
7、OFN_OVERWRITEPROMPT,_T("位图文件(*.BMP;*.jpg)
8、*.BMP;*.jpg
9、"));CFileDialogdlg(TRUE,NULL,NULL,OFN_HIDEREADONLY
10、OFN_OVERWRITEPROMPT,_T("图片文件(*.jpg;*.jpeg;*.gif;*.bmp)
11、*
12、.jpg;*.jpeg;*.gif;*.bmp
13、位图文件(*.BMP)
14、*.BMP
15、
16、")); if(IDOK==dlg.DoModal()) {strPicPath.Format(_T("%s"),dlg.GetPathName());extname=dlg.GetFileExt(); //返回选定文件的扩展文件名extname.MakeLower(); //将后缀名变成小写Invalidate(); }}编写BMP图片显示函数voidCShowBit
17、mapView::ShowBitmap(CDC*pDC,CStringstrPicPath){ HBITMAPhBitmap=(HBITMAP)LoadImage(NULL,strPicPath,IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION
18、LR_DEFAULTSIZE
19、LR_LOADFROMFILE);m_bitmap.Detach();m_bitmap.Att