VC6.0中gdiPlus的使用以及一个小例子

原创 2005年03月03日 09:04:00

1.GDIPlus需要下载sdk开发包

2.在tool,option,direction,include files下设置头文件路径.../MICROSOFT SDK/INCLUDE,在tool,option,direction,libaray  files下设置lib路径.../MICROSOFT SDK/SDK8/LIB,在project, setting, link, object/modules libaray里面输入gdiplus.lib.

注意,路径一定要放在最上层,还有,一定要是绝对路径,上面的...需要自己补充完整

3.新建一个单文档工程XXX,给XXXApp类添加成员变量

protected:
   GdiplusStartupInput m_gdiplusStartupInput;
   ULONG_PTR           m_gdiplusToken;
在XXXApp::InitInstance()里面添加:GdiplusStartup(&m_gdiplusToken, &m_gdiplusStartupInput, NULL);

重载XXXApp::ExitInstance(),在里面添加:GdiplusShutdown(m_gdiplusToken);

注意,以上修改过的文件前面要加上以下语句:

#include <GdiPlus.h>
using namespace Gdiplus;

上面的事情做完,你就可以在程序中使用gdiplus了,以下是一个把bmp转换成jpg的小例子:

int GetEncoderClsid(const WCHAR* format, CLSID* pClsid)
{
   UINT  num = 0;          // number of image encoders
   UINT  size = 0;         // size of the image encoder array in bytes

   ImageCodecInfo* pImageCodecInfo = NULL;

   GetImageEncodersSize(&num, &size);
   if(size == 0)
      return -1;  // Failure

   pImageCodecInfo = (ImageCodecInfo*)(malloc(size));
   if(pImageCodecInfo == NULL)
      return -1;  // Failure

   GetImageEncoders(num, size, pImageCodecInfo);

   for(UINT j = 0; j < num; ++j)
   {
      if( wcscmp(pImageCodecInfo[j].MimeType, format) == 0 )
      {
         *pClsid = pImageCodecInfo[j].Clsid;
         free(pImageCodecInfo);
         return j;  // Success
      }   
   }

   free(pImageCodecInfo);
   return -1;  // Failure
}

void BMP2JPG(CString strBMPFile,CString strJPGFile)
{
    CLSID  encoderClsid;
    WCHAR  strGuid[39];
    if(GetEncoderClsid(L"image/jpeg", &encoderClsid) >= 0)
    StringFromGUID2(encoderClsid, strGuid, 39);
 
    Image image(strBMPFile.AllocSysString());
    image.Save(strJPGFile.AllocSysString(),&encoderClsid,NULL);

}
当然,上面的例子所在文件前面也必须加上

#include <GdiPlus.h>
using namespace Gdiplus;

相关文章推荐

GdiPlus使用方法

GDI是Graphics Device Interface的缩写,含义是图形设备接口,它的主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形输出。 在Windows操作系统下...

VC 6.0 配置和使用gdi+

GDI+   GDI+是Windows XP中的一个子系统,它主要负责在显示屏幕和打印设备输出有关信息,它是一组通过C++类实现的应用程序编程接口。顾名思义,GDI+是以前版本GDI的继承者,出于兼...
  • toss156
  • toss156
  • 2012年02月18日 20:52
  • 3039

VC++6.0&&VS2008&MFC&API学习问题总结(一)(多线程CreateThread及小问题汇总)

以下资料部分收集于网络,部分是自己碰到的问题(内容将陆续更新): 1、VC++6.0无法设置断点:先关闭程序,然后删除目录下的.opt和.ncb文件,重新打开项目,就OK! 2、这个无奈问...

VC++ gdi+的使用步骤(使用版本2010)

1. #include "gdiplus.h" using namespace Gdiplus; #pragma comment(lib, "gdiplus.lib") CXXXAp...

vc6.0中用GDIPlus实现加载动态gif图片(非MFC实现)

今天心情很嗨皮,原因是花了5块钱买了一张刮刮彩,给中了100快,喜悦感可谓是油然而生吧,好了进入正题吧。关于GDI+的介绍在这里就不谈了,总之相比GDI确实方便了太多,比如首先GDI仅仅支持bmp格式...

VC6.0 GDIPlus开发包

  • 2011年08月17日 14:49
  • 829KB
  • 下载

在VC中使用GDIPlus

在VC中使用GDIPlus 首先,在StdAfx.h中静态调用diplus.lib,即由编译系统完成对DLL的加载,应用程序结束时卸载DLL的编码。如下: #ifndef UL...
  • chidy
  • chidy
  • 2012年08月15日 21:44
  • 378

一个服务程序框架,并在vc6.0win32控制台工程中嵌入manifest使用uac

开发环境:vc6.0 + win7三个主要的函数有main(),为程序入口函数;ServiceMain(),服务函数入口,调用真正的服务程序,相当于服务的主线程函数;ControlHandler,接受...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VC6.0中gdiPlus的使用以及一个小例子
举报原因:
原因补充:

(最多只允许输入30个字)