WPF 中保存 window(窗口)或者canvas成图片
2014-06-16 23:00
357 查看
最近需要用到这个功能,搜了一下不少代码有问题 ,找到一个效果比较好的,支持多级子元素 记一下.
原文链接
private void button_save_window_Click(object sender, RoutedEventArgs e) { util.SaveWindow(this,96,"d:\\window.png"); } private void button_save_canvas_Click(object sender, RoutedEventArgs e) { util.SaveCanvas(this,this.canvas1, 96, "d:\\canvas.png"); } } public static class util { 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); } public static void SaveCanvas(Window window, Canvas canvas, int dpi, string filename) { Size size = new Size(window.Width , window.Height ); canvas.Measure(size); //canvas.Arrange(new Rect(size)); var rtb = new RenderTargetBitmap( (int)window.Width, //width (int)window.Height, //height dpi, //dpi x dpi, //dpi y PixelFormats.Pbgra32 // pixelformat ); rtb.Render(canvas); 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); } }
原文链接
相关文章推荐
- html2canvas插件对整个网页或者网页某一部分截图并保存为图片
- 在WPF中把Canvas保存为图片,文本文件,xps文件
- 使用WPF将图片转变为灰度并加上水印并保存为文件
- VFP将图片或其他文件保存到SQL Server的Text类型字段或者Access的备注字段中,并可以还原或显示。
- 如何使用系统级热键捕捉当前窗口保存为 png 图片 - 回复 "巅枫" 的问题
- WPF用流的方式上传/显示/下载图片文件(保存在数据库)
- 如何将Canvas中内容保存为图片
- 在标准window窗口下,显示opencv处理过的图片
- 将文本文件的内容或者文字保存成图片
- 如何将Canvas中内容保存为图片
- [转]在IE7关闭窗口,上传图片无法预览,window.status无效问题解决办法
- 如何使用系统级热键捕捉当前窗口保存为 png 图片
- WPF程序设计 :第一章 应用程序和窗口(The Application and the Window)
- 将文件、图片等写入MySql数据库或者从MySql数据库读出(保存文件字段为blog类型)
- [转]在IE7关闭窗口,上传图片无法预览,window.status无效问题解决办法
- Oracle存储过程保存大文件或者图片
- easyWeb2Pic -- 在IE浏览器中,将整个网页保存为BMP, JPEG/JPG, GIF, PNG或者TIFF图片
- 在IE7关闭窗口,上传图片无法预览,window.status无效问题解决办法
- VFP将图片或其他文件保存到SQL Server的Text类型字段或者Access的备注字段中,并可以还原或显示
- WPF窗口跳转及window和page区别