【问题标题】:How to save BitmapImage via SaveFileDialog from WPF?如何通过 WPF 中的 SaveFileDialog 保存 BitmapImage?
【发布时间】:2011-11-16 13:34:57
【问题描述】:

我尝试通过标准 Windows.Forms 实现它的方式(以获取有效的 DialogResult.OK)

            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 窗体,但它保存空白图像((

【问题讨论】:

  • 你只是打开和关闭文件,你从来没有在其中写入图像......

标签: c# wpf savefiledialog


【解决方案1】:

你可以这样做:

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);
}

顺便说一句,WPF 中也有一个SaveFileDialog,你不必使用 Windows 窗体中的那个

【讨论】:

  • 只需使用Microsoft.Win32.SaveFileDialog 而不是System.Windows.Forms.SaveFileDialog
【解决方案2】:

对于 WPF 代码将是这样的:

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);
    }
}

这里 bi 是 BitmapImage

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多