Loading

C#: Save a canvas as an image

private void CreateSaveBitmap(Canvas canvas, string filename)
     {
       RenderTargetBitmap renderBitmap = new RenderTargetBitmap(
        (int)canvas.Width, (int)canvas.Height,
        96d, 96d, PixelFormats.Pbgra32);
      // needed otherwise the image output is black
       canvas.Measure(new Size((int)canvas.Width, (int)canvas.Height));
       canvas.Arrange(new Rect(new Size((int)canvas.Width, (int)canvas.Height)));
 
renderBitmap.Render(canvas);
 
//JpegBitmapEncoder encoder = new JpegBitmapEncoder();
       PngBitmapEncoder encoder = new PngBitmapEncoder();
       encoder.Frames.Add(BitmapFrame.Create(renderBitmap));
 
using (FileStream file = File.Create(filename))
       {
         encoder.Save(file);
       }
     }
CreateSaveBitmap(myCanvas, @"C:\temp\out.png");

 

posted @ 2021-12-03 21:45  jevan  阅读(62)  评论(0编辑  收藏  举报