2013-07-30 5 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-thanks-taglines-and--from-from-post-from-posts). 대신 어떤 오류가 있는지 (예외가있는 경우) 정보를 추가하고 정확한 오류 메시지로 게시물을 업데이트하십시오. –

답변

0

붙여서하는 저장이 savefile을 대화 상자가 나타납니다 클릭 여기

은 내가 내 수업 버튼에 vb.net

에서 "서명을 추가"에서 사용되는 예제 코드를 대화를 파일 사용해보십시오 파일 이름을 입력하고 저장을 누르면 png 이미지로 저장됩니다 (i는 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