2013-07-30 51 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