正文

GDI+在内存中绘制,并保存为BMP、PNG、JPEG格式的图片关键代码2010-09-11 12:02:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/lym51/51760.html

分享到:

// 获取指定图片格式CLSID

int GetEncoderClsid(const WCHAR* format, CLSID* pClsid)
{
 UINT num= 0;
 UINT 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);
   pImageCodecInfo= NULL;
   return j;
  }
 }

 free(pImageCodecInfo);
 pImageCodecInfo= NULL;

 return -1;
}

 

// 在内存中绘制

Bitmap* pBitmap = new Bitmap(200, 400);

 if (!pBitmap)
 {
  return;
 }

 Graphics* imageGraphics = Graphics::FromImage(pBitmap);

 

// do some draw on imageGraphics

imageGraphics->FillRectangle(.....);

.... and so on..

 

// save as image

CLSID pngClsid;


 if (!pBitmap)
 {
       return FALSE;
 }

 

// save as bmp image
GetEncoderClsid(L"image/bmp", &pngClsid);
 m_pBitmap->Save("C:\\test.bmp", &pngClsid, NULL);

 

// save as png image
GetEncoderClsid(L"image/png", &pngClsid);
 m_pBitmap->Save("C:\\test.png", &pngClsid, NULL);

 

// save as jpeg image
GetEncoderClsid(L"image/jpeg", &pngClsid);
m_pBitmap->Save("C:\\test.jpeg", &pngClsid, NULL);

 

 

阅读(6851) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册