VC下加载多种格式图片的方法总结.doc.docVIP

VC下加载多种格式图片的方法总结.doc.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VC下加载多种格式图片的方法总结.doc

尽管VC有提供相应的API和类来操作bmp位图、图标和(增强)元文件,但却不支持jpg、gif和png等格式的图片,而这几种格式却是常常要用到的。这里我给大家介绍两种办法来操作这些格式的图片。 1.用API OleLoadPicture来加载JPG、GIF格式的图片(注:不支持PNG格式,另外GIF只能加载第一帧,且不支持透明) OleLoadPicture 函数实际上创建了一个IPicture类型的COM接口对象,然后我们可以通过这个COM接口来操作图片(实际上你也可以用API OleCreatePictureIndirect来加载图片,不过相比而言OleLoadPicture函数简化了基于流的IPicture对象的创 建),下面是示例代码:(注:由于只是用来示例,代码中省去了出错情况的处理) ????? ??? /*? ??? *如下代码段实现的功能是从指定的路径中读取图片,并显示出来? ??? */? ??? void DisplayImage(HDC hDC, LPCTSTR szImagePath)? ??? {? ??????????? HANDLE hFile=CreateFile(szImagePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); //从指定的路径szImagePath中读取文件句柄? ??????????? DWORD dwFileSize=GetFileSize(hFile, NULL); //获得图片文件的大小,用来分配全局内存? ??????????? HGLOBAL hImageMemory=GlobalAlloc(GMEM_MOVEABLE, dwFileSize); //给图片分配全局内存? ??????????? void *pImageMemory=GlobalLock(hImageMemory); //锁定内存? ??????????? DWORD dwReadedSize; //保存实际读取的文件大小? ??????????? ReadFile(hFile, pImageMemory, dwFileSize, dwReadedSize, NULL); //读取图片到全局内存当中? ??????????? GlobalUnlock(hImageMemory); //解锁内存? ??????????? CloseHandle(hFile); //关闭文件句柄? ????? ??????????? IStream *pIStream;//创建一个IStream接口指针,用来保存图片流? ??????????? IPicture *pIPicture;//创建一个IPicture接口指针,表示图片对象? ??????????? CreateStreamOnHGlobal(hImageMemory, false, pIStream) //用全局内存初使化IStream接口指针? ??????????? OleLoadPicture(pIStream, 0, false, IID_IPicture, (LPVOID*)(pIPicture));//用OleLoadPicture获得IPicture接口指针? ????? ??????????? //得到IPicture COM接口对象后,你就可以进行获得图片信息、显示图片等操作? ??????????? OLE_XSIZE_HIMETRIC hmWidth;? ??????????? OLE_YSIZE_HIMETRIC hmHeight;? ??????????? pIPicture-get_Width(hmWidth); //用接口方法获得图片的宽和高? ??????????? pIPicture-get_Height(hmHeight);? ??????????? pIPicture-Render(hDC,0,0,100,100,0,hmHeight,hmWidth,-hmHeight,NULL); //在指定的DC上绘出图片? ????? ??????????? GlobalFree(hImageMemory); //释放全局内存? ??????????? pIStream-Release(); //释放pIStream? ??????????? pIPicture-Release(); //释放pIPicture? ??? }? ???? 2.利用第三方的开发库来操作图片 这 里我向大家推荐一个库CxImage。 CxImage里面包含了许多的类,可以用来加载、保存、显示和变换图片,而且支持许多的图片格式

文档评论(0)

dreamzhangning + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档