從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());
我用 CDC *cdc= GetDC(); 然后再 cdc->m_hDC 怎么就不對呢?有沒有完整點的程序在下學習學習。
我的email: bear5461@hotmail.com
Metafile metafile(A2W(sFileName),cdc->m_hDC, EmfTypeEmfPlusDual,NULL);
sorry , please receive email
請問一下樓主:
USES_CONVERSION;與A2W(sFileName)是什么關系,如果在C#中寫,應該是怎樣的?