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