C#/WPF
[WPF] Control to Image
kjun.kr
2021. 12. 14. 18:23
728x90
728x170
using System.IO; using System.Windows; using System.Windows.Media; using System.Windows.Media.Imaging; namespace WpfApp4 { public class Function { /// <summary> /// Grid를 Bitmap이미지로 변환 /// </summary> /// <param name="grid">이미지 변환 할 Grid</param> /// <param name="filePath">저장될 png 파일 경로</param> /// <returns></returns> public static void SaveControlToImage(FrameworkElement grid, string filePath) { Size size = new Size(grid.ActualWidth, grid.ActualHeight); if (!size.IsEmpty) { RenderTargetBitmap result = new RenderTargetBitmap((int)size.Width, (int)size.Height, 96, 96, PixelFormats.Pbgra32); DrawingVisual drawingvisual = new DrawingVisual(); using (DrawingContext context = drawingvisual.RenderOpen()) { context.DrawRectangle(new VisualBrush(grid), null, new Rect(new Point(), size)); context.Close(); } result.Render(drawingvisual); FileStream stream = new FileStream(filePath, FileMode.Create); PngBitmapEncoder encoder = new PngBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(result)); encoder.Save(stream); stream.Close(); } } } } |
728x90
그리드형