Mega Code Archive

 
Categories / C# / 2D Graphics
 

Save WindowCanvas to Image

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Media; using System.Windows.Data; using System.Windows.Controls; using System.Windows; using System.Windows.Media.Imaging; namespace Adsophic.PhotoEditor.GUILibrary.Imaging {     public static class ImageUtils     {         public static void SaveWindow(Window window, int dpi, string filename)         {             var rtb = new RenderTargetBitmap(                 (int)window.Width, //width                  (int)window.Width, //height                  dpi, //dpi x                  dpi, //dpi y                  PixelFormats.Pbgra32 // pixelformat                  );             rtb.Render(window);             SaveRTBAsPNG(rtb, filename);         }         private static void SaveRTBAsPNG(RenderTargetBitmap bmp, string filename)         {             var enc = new System.Windows.Media.Imaging.PngBitmapEncoder();             enc.Frames.Add(System.Windows.Media.Imaging.BitmapFrame.Create(bmp));             using (var stm = System.IO.File.Create(filename))             {                 enc.Save(stm);             }         }         public static ImageSource GetImageFromUri(Uri uri)         {             Binding imageSourceBinding = new Binding();             imageSourceBinding.Source = uri;             Image newImage = new Image();             newImage.SetBinding(Image.SourceProperty,                 imageSourceBinding);             if (newImage.Source == null)                 return null;             return newImage.Source.Clone();         }     } }