| 
              // 创建位图并绘制Bitmap bitmap(200, 200);
 Graphics gbmp(&bitmap);
 SolidBrush brush(Color(0, 255, 255));
 gbmp.FillRectangle(&brush, 10, 10, 150, 150);
 
 // 保存为bmp文件
 // 图像中未绘制的部分自动变成黑色
 CLSID id, id2;
 GetEncoderClsid(L"image/bmp", &id);
 bitmap.Save(TEXT("myimage.bmp"), &id);
 
 brush.SetColor(Color(255, 0, 255));
 gbmp.FillRectangle(&brush, 40, 40, 80, 80);
 
 // 保存为png文件
 // 图像中未绘制的部分自动变为透明
 GetEncoderClsid(L"image/png", &id2);
 bitmap.Save(TEXT("myimage.png"), &id2);
 
 
 // 其中GetEncoderClsid函数不是自带的,要自己定义
 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
 }
 
 |