2013-07-30 39 views
1

我试图挽救墨迹画布图像但它不保存后创建的任何文件,这是我的代码免于墨迹画布图像

RenderTargetBitmap rtb = new RenderTargetBitmap(
    (int)canvas.Width, (int)canvas.Height, 0, 0, PixelFormats.Default); 

rtb.Render(this.canvas); 

JpegBitmapEncoder encoder = new JpegBitmapEncoder(); 

encoder.Frames.Add(BitmapFrame.Create(rtb)); 

using(var file = new FileStream(@"C:\test.jpg", FileMode.Create)) 
{ 
    encoder.Save(file); 
} 

但它不甚至当我创建任何文件改变目录。没有例外被调用,并且没有显示错误。代码运行正常,没有任何问题,但生成的文件不存在。

+0

我已经更新了标题(随时恢复/提高)和[删除“感谢信”(http://meta.stackexchange.com/questions/2950/should -hi-感谢,标语和 - 称呼被移除从 - 个)。请改为添加有关您看到哪些(如果有)例外的信息,并使用确切的错误消息更新您的帖子。 –

回答

0

尝试使用保存文件对话框

下面是一个示例代码我在我的课在vb.net

在按钮“添加签名”使用的点击会出现一个SAVEFILE对话框,把后一个文件名并按保存,它将被保存为一个PNG图像(我使用pngBitmap编码器)

这与您正在使用的格式相同,但添加了保存文件对话框。

btw。 WPFControl.Inkcanvas1是我inkcanvas

'buttonSaveAsClick 


    'open save file dialog box 
    Dim sfd As New SaveFileDialog() 
    sfd.Filter = "Png Files(*.png)|*.png" 

    'save file as png (render bitmap and convert/save to png) 
    Dim result As Nullable(Of Boolean) = sfd.ShowDialog() 
    Dim fileName As String = "" 

    If result = True Then 
     fileName = sfd.FileName 

     Dim size As Size = New Point(750, 400) '= WPFControl.InkCanvas1.RenderSize 
     Console.WriteLine(WPFControl.InkCanvas1.RenderSize) 
     Dim rtb As New RenderTargetBitmap(CInt(size.Width), CInt(size.Height), 96, 96, Windows.Media.PixelFormats.Pbgra32) 
     rtb.Render(WPFControl.InkCanvas1) 
     Dim png As New PngBitmapEncoder() 
     png.Frames.Add(BitmapFrame.Create(rtb)) 
     If String.IsNullOrEmpty(fileName) = True Then 
      MsgBox("Please Enter a File Name", MsgBoxStyle.Exclamation, "File Name required!") 
      Exit Sub 

     Else 
      Console.WriteLine(sfd.FileName) 
      Console.WriteLine(convertImage.ConvertImageFiletoBytes(sfd.FileName)) 
     End If 


     Using stm As Stream = File.Create(fileName) 
      png.Save(stm) 

     End Using 
    End If