從MSDN上可以看到用GDI+的Image::Save方法可以很容易的實現把圖片保存為BMP、GIF、TIFF、PNG、JPEG格式。雖然GDI+的Metafile類給了我們讀取EMF、WMF格式圖片方便,但是這個類沒有直接提供保存的方法來寫EMF、EXIF、WMF文件。這里介紹另外一種巧妙的寫方法。
先用GDI+的Bitmap類建立一個對象,所有的畫圖操作完成之后形成一個Bitmap位圖。然后傳入一個需要保存的EMF等文件的路徑。用空的文件路徑構造一個Metafile對象,再用Metafile對象構造一個Graphics畫圖對象,最后把源位圖用DrawImage畫出來即可。這里的目標畫圖DC實際上就是用EMF文件。
Bitmap m_Bitmap; //已經畫好的位圖對象,或者之間用位圖文件構造
USES_CONVERSION; //提供A2W宏字符串轉換
sFileName = "c:\\test.emf"; //目標的EMF文件路徑
Metafile metafile(A2W(sFileName),cdc->m_hDC, EmfTypeEmfPlusDual,NULL);
Graphics graphics(&metafile);
graphics.DrawImage(&bmp, 0, 0, bmp.GetWidth(), bmp.GetHeight());