GDI+图形函数,一个组在.net环境下提供的以取代GDI图形函数的类,将来会逐渐取代GDI图形函数.

如果在vc6.0中使用gdi+图形函数,那么请按以下步骤操作:

1.下载GDIPlus.rar(下载地址:http://download.csdn.net/detail/whatday/4296203)将其中的Includes和Lib中的文件拷到vc目录下的Includes和Lib文件夹中.


2新建一个工程(以winsdk框架为例mfc也相同)

将以下代码加入StdAfx.h头文件中

//加入的头文件
#include <comdef.h>//初始化一下com口

#ifndef ULONG_PTR
#define ULONG_PTR unsigned long*
#include "GdiPlus.h"
using namespace Gdiplus;
#endif
//结束

3在程序初始化部分加入

//gdi+用到的两个变量
    GdiplusStartupInput m_gdiplusStartupInput;
    ULONG_PTR m_pGdiToken;
    //装载gdi+
    GdiplusStartup(&m_pGdiToken,&m_gdiplusStartupInput,NULL);

4在程序退出部分前加入

    //卸载gdi+
            GdiplusShutdown(m_pGdiToken);

5在Project->stting->Link->Object/libary中加入gdiplus.lib

好了经过上面几步我们就可以在程序中使用GDI+了,先试一下吧!

显示一个透明字符串

    Graphics mygraphics(hdc);//创建一个Graphics对象
    SolidBrush brush(Color(100,0,0,255));//创建一个笔刷 第一项是透明度 后三项是RGB值
    FontFamily fontFamily(L"Latha");选择一种字体
    Font font(&fontFamily,1,FontStyleRegular,UnitInch);
    PointF pointF(5,5);

    mygraphics.DrawString(L"Hello Word!",-1,&font,pointF,&brush);

或显示一幅jpg图像

    CString path="001.jpg";
    BSTR str=path.AllocSysString();
    Image image(str);
    CDC* hdc=GetDC();
    Graphics imgraphics(hdc->m_hDC);
    imgraphics.DrawImage(&image,0,0);

注意要把001.jpg考到工程目录下

/

图片类型互转(png,bmp,jpg,gif)

示例:png->bmp

函数声明

INT GetEncoderClsid(const WCHAR* format, CLSID* pClsid);


// Get the CLSID of the PNG encoder.

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 }

INT main()     {     // Initialize GDI+.       GdiplusStartupInput gdiplusStartupInput;     ULONG_PTR gdiplusToken;     GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);      CLSID   encoderClsid;     Status   stat;     Image*   image = new Image(L"test.png");      // Get the CLSID of the PNG encoder.       GetEncoderClsid(L"image/bmp", &encoderClsid);  //或者image/png image/jpeg等      stat = image->Save(L"test2.bmp", &encoderClsid, NULL);      if(stat == Ok)       printf("test2.png was saved successfully\n");     else       printf("Failure: stat = %d\n", stat);      delete image;     GdiplusShutdown(gdiplusToken);     return 0;     }