VC6使用GDI+

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

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

1.下载GDIPlus.rar(下载地址:http://download.youkuaiyun.com/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;  
  }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值