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);
如果在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;
}