- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
mfc图像格式转化
色彩鲜艳漂亮的高品质图像,一个个形象的Windows图标,高速运动、活灵活现的三维动画,这些生动的图形无一不显示着程序设计者的艺术才华。在程序设计中,图像处理已经成了每个程序员的必修课,所以,对于每个程序员来说,熟悉“BMP”、“GIF”、“JPEG”图像格式及具体应用、调色板、图像文件头格式、图像压缩算法等概念似乎已经成了工作中不可缺少的基础知识。面对如此多的图像格式,如果要全部掌握其具体细节,好像这对程序员有些不公。在VC中编程显示一幅位图,下列的步骤是不可少的:装入位图、获得位图的大小信息、启用设备环境、位传输,所需的程序代码显得千篇一律的冗长。如果想要装入的位图另存为其他格式的图像文件……?两个字:头疼!而这一切都是因为GDI本身的局限性所造成。
随着Windows2000的推出,上面的情况有了大大的改观:你可以不必了解每种图像格式的具体含义,照样可以写出多格式图像浏览或转换程序,这一切,全部都依赖于Windows 2000及后继版中所使用的GDI+技术。首先来看看GDI+的具体技术细节及GDI+编程特点。Windows2000在用户界面方面包括了几个重大的改进,可能你已经注意到了有阴影的鼠标、渐入的工具条快速提示、透明的窗口、平滑地窗口变化等。Windows 2000在界面上之所以有这么大的改进,完全是因为Windows2000采用了一种GDI(graphicsdeviceinterface:图形设备接口)。这种GDI,以前叫GDI2k,现在有了一个更好听的名字:GDI+。GDI+是一种新型的图形设备接口,它的主要特点在于它能够创建全新的用户桌面体系、能够轻易地完成二维或三维的图形处理,为桌面带来一种数字化的图片。GDI 同时也提供了增强的图形处理技术,如常见的:alphablending、纹理、贴图、增强的文本及图片显示技术。实际上,GDI 主要的特色就在于强调通过硬件加速来达到良好的视觉感受!同传统的GDI不同,GDI+中引入了对COM(组件对象模型)技术的支持,通过COM技术,GDI+简化了对图像文件的访问(打开、保存)程序:通过调用COM组件来实现的,GDI+扮演的只是指挥者,而非操作员。对于图像文件,GDI+所关心的不是图像文件的文件头信息,不论欲打开的文件格式是什么类型,GDI+首先要做的是在注册中查看该图像格式的编码(或解码)信息是否已经注册(HKEY_CLASSES_ROOT\MIME\Database\ContentType),如果已经注册,就通过该编码信息调用COM组件,就这么简单。这种技术其实早就在微软的其他软件中已经使用了,如IE。“体验”过NIMDA病毒的朋友可能对“audio/wav”这段代码并不陌生,NIMDA就是靠它来伪装自己的:让IE认为附件是WAV文件而自动打开可执行程序。这其实也是IE使用COM技术的一个突出表现。配合GDI+的推出,微软也同时发布了相应的SDK,如果你已经安装了最新的MicrosoftPlatFormSDK或已经开始使用VS.net,GDI+ SDK已经在你的系统中了。如果没有的话,可以到/progtool上去下载GDI+的头文件和库文件。在使用GDI 之后,,再有没有必要去考虑什么句柄、设备环境这样的概念了。你只需要简单地创建一个图形对象(Graphicsobject),然后直接调用该对象的方法(methods)进行绘图即可。图形对象是GDI+中核心,正如DC之于GDI那样。图形对象和DC有许多相似的地方,在使用上遵循着相同的使用规则,但是两者在本质上已经有很大的区别。一个是基于句柄的GDI,一个是基于组件对象模型的GDI 。使用GDI+的SDK编程,必须得按照下面的规范来进行:使用GDI+的名空间(namespaceGdiplus)、在使用GDI+函数时必须进行GDI+的初始化,使用完毕之后也得销毁GDI+,这种规范在下面所列的程序中有详细的说明。前面说到了GDI+是通过在注册中查看编码信息来访问图像文件的,在GDI+的SDK中,编码信息是储存在ImageCodecInfo类中的,在这个类中,有编码的CLSID(COM组件的GUID标识码)、编码方式描述等。在GDI中,在注册表中访问编码信息通常使用以下两个函数来实现:1、查看系统中可用的图像编码信息(数量及大小)StatusGetImageEncodersSize UINT*numEncoders,//存储编码器数量的地址UINT*size //存储编码信息所需内存大小 ;2、得到所有的编码信息StatusGetImageEncoders UINTnumEncoders,//可用编码器数量UINTsize,//储存编码器信息所需内存(由ImageCodecInfo类组成的数组的大小)ImageCodecIn
文档评论(0)