2011-11-16 37 views
2

我試着通過非標準Windows.Forms的實現它如何通過WPF中的SaveFileDialog保存BitmapImage?

  System.Windows.Forms.SaveFileDialog dlg = new System.Windows.Forms.SaveFileDialog(); 
      dlg.FileName = "Document"; // Default file name 
      // dlg.DefaultExt = ".jpg"; // Default file extension 
      dlg.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif"; 
      if(dlg.ShowDialog()== System.Windows.Forms.DialogResult.OK) 
if (dlg.DialogResult.HasValue && splashDialog.DialogResult.Value) 
      { 
       string fName = dlg.FileName; 
       if (dlg.FileName != "") 
       { 
       System.IO.Stream fileStream = (System.IO.FileStream)dlg.OpenFile(); 

        fileStream.Close(); 
       } 
      } 

這是使用Windows窗體(獲得的Valide DialogResult.OK)的方式,但它節省了空白圖像((

+0

你只是打開和關閉文件,你從來不寫在它... –

回答

5

你可以做這樣的事情:

var encoder = new JpegBitmapEncoder(); // Or PngBitmapEncoder, or whichever encoder you want 
encoder.Frames.Add(BitmapFrame.Create(yourImage)); 
using (var stream = dlg.OpenFile()) 
{ 
    encoder.Save(stream); 
} 

BTW,有在WPF中SaveFileDialog過,你不必使用一個從Windows窗體

+0

圖像???您的解決方案正在致謝。但我怎麼能打電話給WPF保存文件對話框 – curiousity

+0

只需使用'Microsoft.Win32.SaveFileDialog'而不是'System.Windows.Forms.SaveFileDialog' –

0

用W PF代碼將是這樣的:

Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog(); 
dlg.FileName = "Document";    
dlg.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif"; 
if (dlg.ShowDialog() == true) 
{ 
    var encoder = new JpegBitmapEncoder(); // Or PngBitmapEncoder, or whichever encoder you want 
    encoder.Frames.Add(BitmapFrame.Create(bi)); 
    using (var stream = dlg.OpenFile()) 
    { 
     encoder.Save(stream); 
    } 
} 

這裏是雙向的BitmapImage的