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