none
大家好,请教picturebox保存图片问题 RRS feed

  • 问题

  • 大家好,帮我看看这段代码:

     Dim saveFileDialog1 As New SaveFileDialog()
            saveFileDialog1.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif|PnG Image|*.png|Wmf Image|*.wmf"
            saveFileDialog1.Title = "图片另存为"
            saveFileDialog1.FileName = Labelname.Text

            Try
                If saveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
                    ' Saves the Image via a FileStream created by the OpenFile method.
                    Dim fs As System.IO.FileStream = CType(saveFileDialog1.OpenFile(), System.IO.FileStream)
                    ' Saves the Image in the appropriate ImageFormat based upon the file type selected in the dialog box.
                    ' NOTE that the FilterIndex property is one-based.
                    Select Case saveFileDialog1.FilterIndex
                        Case 1
                            Me.PictureBox1.Image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg)
                        Case 2
                            Me.PictureBox1.Image.Save(fs, System.Drawing.Imaging.ImageFormat.Bmp)
                        Case 3
                            Me.PictureBox1.Image.Save(fs, System.Drawing.Imaging.ImageFormat.Gif)
                        Case 4
                            Me.PictureBox1.Image.Save(fs, System.Drawing.Imaging.ImageFormat.Png)
                        Case 5
                            Me.PictureBox1.Image.Save(fs, System.Drawing.Imaging.ImageFormat.Wmf)
                    End Select
                    fs.Close()
                    'If saveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
                    MsgBox("图片保存成功", MsgBoxStyle.SystemModal)
                End If
            Catch ex As Exception
                MsgBox(ex.Message.ToString)
                MsgBox("没有找到需要保存的图片", MsgBoxStyle.SystemModal)
            End Try
    为什么把picturebox中的WMF文件保存成WMF格式时会提示  “未处理 System.ArgumentNullException 参数名: encoder”。但保存成jpeg格式时就正常,这是为什么呢?谢谢


    昨夜西风凋碧树,独上高楼,望尽天涯路!
    2009年10月6日 9:31

答案

  • 不支持。参考http://support.microsoft.com/kb/316563

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2009年10月6日 16:10
    版主
  • 你好 可能是你的PictureBox的图片本身不是Metafile:Image类型的,还有就是有可能GDI+并没有内置了这种格式的编码器的

    引用自msdn
    "使用 Save 方法将图形图像保存为 Windows 图元文件格式 (WMF) 或增强型图元文件格式 (EMF) 文件时,结果文件将另存为可移植网络图形 (PNG) 文件。发生此行为是由于 .NET Framework 的 GDI+ 组件没有可用来将文件另存为 .wmf 或 .emf 文件的编码器。
    "

    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年10月7日 6:43
    版主

全部回复

  • 不支持。参考http://support.microsoft.com/kb/316563

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2009年10月6日 16:10
    版主
  • 你好!
         是支持保存成Wmf格式的,你可能有其他问题,你在这行打个断点:
    Me.PictureBox1.Image.Save(fs, System.Drawing.Imaging.ImageFormat.Wmf)
         看看选择Wmf过滤器的时候是否执行了这行代码?
        
    周雪峰
    2009年10月7日 6:05
    版主
  • 你好 可能是你的PictureBox的图片本身不是Metafile:Image类型的,还有就是有可能GDI+并没有内置了这种格式的编码器的

    引用自msdn
    "使用 Save 方法将图形图像保存为 Windows 图元文件格式 (WMF) 或增强型图元文件格式 (EMF) 文件时,结果文件将另存为可移植网络图形 (PNG) 文件。发生此行为是由于 .NET Framework 的 GDI+ 组件没有可用来将文件另存为 .wmf 或 .emf 文件的编码器。
    "

    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年10月7日 6:43
    版主
  • 你好,谢谢,就是执行到这一句时出现错误的


    昨夜西风凋碧树,独上高楼,望尽天涯路!
    2009年10月7日 7:48
  • 你好,谢谢,就是执行到  Me.PictureBox1.Image.Save(fs, System.Drawing.Imaging.ImageFormat.Wmf)   这一句时出现错误的


    昨夜西风凋碧树,独上高楼,望尽天涯路!
    2009年10月7日 7:58
  • 你好!
         那你检查以下fs的文件名是否是Wmf格式!
    周雪峰
    2009年10月7日 11:41
    版主
  • 你好,是wmf格式的


    昨夜西风凋碧树,独上高楼,望尽天涯路!
    2009年10月8日 6:07
  • 你好 应该如msdn上所述 GDI+没有内置wmf的编码器
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年10月8日 6:18
    版主
  • 请教一下大家啊!
    大家都说不能保存成wmf格式,但是我下面的代码可以保存wmf格式的图片:
                Image image = new Bitmap(@"D:\a.jpg");
                image.Save(@"D:\b.wmf", ImageFormat.Wmf);
    请问是什么原因呢?
    周雪峰
    2009年10月8日 10:57
    版主