2014-05-08 177 views
0

我正在嘗試將.emf文件渲染爲給定大小的位圖。將.emf文件渲染爲位圖

這是我的代碼中,我使用此答案爲基:How do I resize (shrink) an EMF (Metafile) in .Net?

public void SetEmfFromBitmap(string emfPath, Size size) 
    { 
     if (emfPath.Contains(".emf")) 
     { 
      using (var source = new Metafile(emfPath)) 
      using (var target = new Bitmap(size.Width, size.Height)) 
      using (var g = Graphics.FromImage(target)) 
      { 
       g.DrawImage(source, 0, 0, size.Width, size.Height); 
       target.Save("c:\\temp\\Month_Calendar.png", ImageFormat.Png); //this works.. 
       this.Image = target; //but this doesnt??? 
      } 
     } 
     else 
     { 
      throw new ArgumentException("Invalid path to .emf file: " + emfPath); 
     } 
    } 

約的方法屬於被從PictureBox的派生類。這就是爲什麼我設置this.Image(這是一個位圖)。但是我能看到的是我Winforms應用程序中的白色背景的紅色十字。

那麼,位圖對象有什麼問題?

回答

0

我自己找到了原因:由於使用using語句,目標位圖被丟棄。答案是使用this.Image =(位圖)target.Clone();代替。