每次使用CImage::Save()方法,如果指定guidFileType参数,比如指定为ImageFormatBMP,编译器老说我没有定义它。这到底是怎么回事呀,我查找ImageFormatBMP定义,找到他们都是在gdiplusimaging.h中定义的,我包含这个文件如果在atlimage.h前,这好多错误,明显是重复定义了。如果在其后面包含,错误还是一样,提示我ImageFormatBMP没有定义,郁闷死。现在只能用一种非常曲折的办法,即用CImage::GetExporterFilterString函数得到这个GUID,然后把它保存到一个链表中,然后再读出来,用在Save中,如果我要保存的格式较多,这也无所谓,但我只需要将这些保存成一种格式,这样又不直观,又麻烦。各位,是不是那个头文件没有包含呀?不要建议我用jpeglib这个库哈,我用了,感觉导入那么多文件到我工程中,就为了实现这么一个功能,相当不爽,再说jpeglib对图像的柔和效果做的不太好!

解决方案 »

  1.   

    你改变一下vc的 include files path,把ATL的include 放在mfc include 前面。
    或者用gdi+,它的功能比CImage强大多了,需要下载microsoft platform sdk
      

  2.   

    在ImageFormatJPEG加上命名空间Gdiplus
    CImage是对GDI+进行得一个封装,里面所有图形格式的GUID用的都是Graphi下得图形的GUID,必须加上Gdiplus这个命名空间才能使用!
      

  3.   

    TO:asett1,虽然GDI+比较强大,但我觉得如果我简单的做个图形处理并不需要用到这个,CImage能够满足我所有需求了,不过用GDI+的确很好,比如你封装一个图形处理软件的底层操作类,如果用一般的GDI,避免不了的是要在程序中涉及到界面的一些事,但用GDI+可以做到完全与界面无关,或者说有关,但封装的代码至少要清晰得多!
    谢谢OverSense得回答,我问这个问题得那个晚上就找到错误原因了。