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的初次接触--加载并显示常用格式图片

在没有接触Gdiplus之前,在vc中绘制图片,通常加载一张位图,然后进行贴图。对于现在多种多样的图片格式,之前的GDI并不支持(应该是这样的,呵呵)。而使用Gdiplus则可以选择多种图片格式,比如...
  • s634772208
  • s634772208
  • 2015年06月01日 09:56
  • 5690

GDI+编程说明及小结(叙述较为全面)

原文地址:http://blog.csdn.net/byxdaz/article/details/5972759
  • chenlycly
  • chenlycly
  • 2014年11月20日 19:09
  • 7626

从资源中加载jpg, png到GDI+ Image

从资源中加载jpg和png文件, 貌似不应该是个大问题, 一google结果一大堆, 却有两个陷阱,trap啊 1, 是Bitmap(RT_BITMAP)类型的图片无法加载, RT_BITMAP...
  • wwqingyue
  • wwqingyue
  • 2014年12月09日 12:43
  • 1630

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

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

vc++6.0自己写一个DLL供自己的PB9调用完整的例子

  • 2017年08月08日 05:42
  • 2.04MB
  • 下载

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
  • 392

在 VC6 中使用 GdiPlus-安装

Step1:下载 GdiPlus SDK 文件包     VC6 的安装程序并没有包含 GdiPlus 相关的库文件和头文件,所以想在VC6中使用 GdiPlus,你首先得把这些文件下载到本...
  • huihuang1515
  • huihuang1515
  • 2015年06月05日 21:55
  • 406

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

开发环境:vc6.0 + win7三个主要的函数有main(),为程序入口函数;ServiceMain(),服务函数入口,调用真正的服务程序,相当于服务的主线程函数;ControlHandler,接受...
  • jellyYin
  • jellyYin
  • 2011年01月29日 20:40
  • 2396

一个系统中同时使用VC6.0+OpenCV1.0和VS2010+OpenCV2.4.6.0的方法

From:  http://blog.csdn.net/zzy7222872/article/details/6047446 以前用的是VC6.0+OpenCV1.0的组合,一直用的很好。一般的...
  • JoeBlackzqq
  • JoeBlackzqq
  • 2013年08月27日 11:31
  • 3719
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VC6.0中gdiPlus的使用以及一个小例子
举报原因:
原因补充:

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