mfc编程实现显示jpggif图像

mfc编程实现显示jpggif图像

ID:34128754

大小:149.30 KB

页数:6页

时间:2019-03-03

mfc编程实现显示jpggif图像_第1页
mfc编程实现显示jpggif图像_第2页
mfc编程实现显示jpggif图像_第3页
mfc编程实现显示jpggif图像_第4页
mfc编程实现显示jpggif图像_第5页
资源描述:

《mfc编程实现显示jpggif图像》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、如果你是一个使用VB编程的程序员,要在程序中显示JPG或者GIF图像简直易如反掌,将图像控件拖到Form中,分分钟即可搞掂。但是C++程序员要显示同样的图形却没有那么轻松,那么是不是要自己编写JPG解压缩代码呢?当然不用那么复杂啦!本文将针对这个问题讨论如何在MFC中显示JPG或者GIF图像。   用VB写图像显示程序之所以如此轻松,完全是利用了琳琅满目的图像处理控件,把你想要做的事情都一一搞掂。而C++程序员为了实现相同的功能必须忙乎半天。其实,C/C++程序员也能使用那些VB程序员所用的(或者说几乎一样的)图像控件。VB用的图像控件实际上都基于一个系统级CO

2、M类——IPicture。下面是有关IPicture的方法描述:方法描述get_Handle 返回图像对象的WindowsGDI句柄 get_Hpal 返回图像对象当前使用的调色板拷贝get_Type返回当前图像对象的的图像类型get_Width 返回当前图像对象的图像宽度get_Height 返回当前图像对象的图像高度Render 在指定的位置、指定的设备上下文上绘制指定的图像部分set_Hpal 设置当前图像的调色板get_CurDC 返回当前选中这个图像的设备上下文SelectPicture 将一个位图图像选入给定的设备上下文,返回选中图像的设备上下文和图

3、像的GDI句柄get_KeepOriginalForma 返回图像对象KeepOriginalFormat属性的当前值put_KeepOriginalFormat 设置图像对象的KeepOriginalFormat属性PictureChanged 通知图像对象它的图像资源改变了SaveAsFile 将图像数据存储到流中,格式与存成文件格式相同get_Attributes 返回图像位属性当前的设置   从上面这个表可以看出,IPicture操纵着图像对象及其属性。图像对象提供对位图的抽象,而Windows负责BMP、JPG和GIF位图的标准实现。程序员要做的只是实

4、例化IPicture,然后调用其Render函数。与通常使用接口的方式不同,这里实例的创建我们不用CoCreateInstance函数,而是用一个专门的函数OleLoadPicture。IStream*pstm=//需要一个流(stream)IPicture*pIPicture;hr=OleLoadPicture(pstm,0,FALSE,IID_IPicture,(void**)&pIPicture);OleLoadPicture从流中加载图像并创建一个可用来显示图像的新IPicture对象。rc=//显示图像的矩形//将rc转换为HIMETRICspIPic

5、ture->Render(pDC,rc);   IPicture负责处理所有琐事,以便确定图形之格式,如Windows位图、JPEG或者GIF文件——甚至是图标和元文件(metafiles)。当然啦,所有这些的实现细节是需要技巧的,为此我写了一个Demo程序Myimgapp(如图二)来示范这些IPicture的使用方法。图一Myimgapp的运行画面   Myimgapp是个典型的MFC文档/视图程序,在编写这个程序之前,我首先对IPictureCOM接口进行封装,之所以要这么做,主要是考虑到并不是每一个程序员都能熟练运用COM接口进行编程,另外将IPictur

6、e的主要功能封装在C++类中可以使我们的问题更容易解决,我封装的这个C++类名字叫做CPicture。它的定义和实现细节请参考本文提供的源代码。   我在这个类中将复杂而陌生的COM风格的参数映射成MFC程序员更为熟悉的类型。例如,CPicture可以让你直接从文件名加载一幅图像,CFile或者CArchive,而不用去处理流,CPicture::Render替你完成了IPicture中所有令人讨厌的但又是必须的HIMETRIC平滑转换工作。CPicture甚至具备了一个Load函数,它可以从资源数据中加载图像,所以你只要用下面的代码就可以显示资源中的图像:CP

7、icturepic(ID_MYPIC);//加载图像CRectrc(0,0,0,0);//使用缺省的rcpic.Render(pDC,rc);//显示图像CPicture::Render提供一个显示图片的矩形。IPicture对图像进行延伸处理。如果传递一个空矩形,则CPicture用图像本身的大小--不进行延伸处理。对于图像本身而言,CPicture查找"IMAGE"类型的资源,所以在资源文件中你必须要加入下面的代码:IDR_MYPICIMAGEMOVEABLEPURE"res\MyPic.jpg"   CPicture是个很棒的傻瓜类,它具备一个ATL智能

8、指针CComQIPtr指

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。