标题:在VC6.0下用GDI+画图 出处:Felix021 时间:Thu, 29 Jul 2010 00:50:44 +0000 作者:felix021 地址:https://www.felix021.com/blog/read.php?1899 内容: 1. 下载gdi+的sdk,安装。当然,可以简化一点,从这里[ http://download.csdn.net/down/1645798/huohuo1120 ]下载gdiplus所需文件包,解压并导入到vc6(将include和lib目录加入vc6的配置中) 2. 在VC6中创建一个Win32 Application,选择“一个简单的Win32程序”。假设项目名是main 3. 在StdAfx.h中加入#include #define UNICODE #include #ifndef ULONG_PTR #define ULONG_PTR unsigned long* #include using namespace Gdiplus; #endif 4. 在main.cpp的WinMain前面生命全局的两个GDI变量GdiplusStartupInput gdiplusStartupInput; ULONG_PTR gdiplusToken; 5. 在程序退出之前的地方加上GdiplusShutdown(gdiplusToken); 6. 画图 6.1 创建一个Bitmap对象Bitmap *pBitmap = new Bitmap(width, height, PixelFormat24bppRGB); 6.2 从Bitmap中获取Graphics对象Graphics *g = Graphics::FromImage(pBitmap); 6.3 使用各种东西的组合来搞g,比如Pen, Brush, Region, Rect, PointF, Font……Pen pen_black(Color(255, 0, 0, 0), 3); g->DrawLine(&pen_black, 0, 0, 100, 100); 更具体的说明和各种例子可以在这里找到:GDI+ SDK参考(翻译版本) http://download.csdn.net/source/642128 7. 保存文件,这个比较麻烦 int GetEncoderClsid(const WCHAR* format, CLSID* pClsid) { UINT num= 0, size= 0; ImageCodecInfo* pImageCodecInfo= NULL; GetImageEncodersSize(&num, &size); if(size== 0) return -1; pImageCodecInfo= (ImageCodecInfo*)(malloc(size)); if(pImageCodecInfo== NULL) return -1; 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; } } free(pImageCodecInfo); return -1; } ...... CLSID encoder; GetEncoderClsid(L"image/png", &encoder); // L"image/jpeg", ... pb->Save(L"result.png", &encoder, NULL); Generated by Bo-blog 2.1.0