首页 > 其他分享 >WPF中将Canvas导出为png图片

WPF中将Canvas导出为png图片

时间:2023-04-27 18:34:32浏览次数:34  
标签:Canvas LayoutTransform renderTargetBitmap canvas new WPF png size

 1 public static void ExportToPng(this Canvas canvas,Uri path)
 2 {
 3   if(path==null)
 4     {
 5         return;
 6     }  
 7   Transform transform =canvas.LayoutTransform;
 8   canvas.LayoutTransform=null;
 9   Size size=new Size(900,600);
10   canvas.Measure(size);
11   canvas.Arrange(new Rect(size));
12   RenderTargetBitmap renderTargetBitmap=new RenderTargetBitmap((int)size.Width,(int)size.Height,96d,96d,PixelFormats.Pbgra32);
13   renderTargetBitmap.Render(canvas);
14   using(FileStream outstream=new FileStream(path.LocalPath,FileMode.Create))
15   {
16   PngBitmapEncoder encoder=new PngBitmapEncoder();
17   encoder.Frames.Add(BitmapFrame.Create(renderTargetBitmap));
18   encoder.Save(outstream);  
19   }
20   canvas.LayoutTransform;
21 }

上述代码将ExportToPng方法写成Canvas类的扩展方法形式,方便调用。

标签:Canvas,LayoutTransform,renderTargetBitmap,canvas,new,WPF,png,size
From: https://www.cnblogs.com/follow-discoverer/p/17359916.html

相关文章

  • WPF程序接收启动参数并启动
    新建一个WPF项目WpfApp1 创建一个新的启动类publicclassNewApp{publicstaticstring[]Args=newstring[]{};[STAThread]publicstaticvoidMain(string[]args){Args=args;Appapp=newApp();......
  • 当我第一次通过Kotlin和Compose来实现一个Canvas时, 我收获了什么?
    当我第一次通过Kotlin和Compose来实现一个Canvas时,我收获了什么?自从2019年Google推荐Kotlin为Android开发的首选语言以来已经经历了将近四年的时间,Compose的1.0版本也发布了将近2年的时间,Kotlin+Compose在现阶段的Android开发过程中还远远达不到主流的程度.我们是否应该......
  • WPF教程_编程入门自学教程_菜鸟教程-免费教程分享
    教程简介WPF(WindowsPresentationFoundation)是微软推出的基于Windows的用户界面框架,属于.NETFramework的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。WPF初入门教程-从简单的步骤了......
  • canvas指纹追踪技术
    通过canvas生成一个base64的字符串对于设备、操作系统、浏览器生成的functionuuid(){constcanvas=document.createElement('canvas');constctx=canvas.getContext('2d');consttxt='test';ctx.fillText(txt,10,10);console.log(canva......
  • wpf中IValueConverter的两种实现方式(key和静态实例)以及 ValueConversion 特性
    使用值转换器的场景:你得到一个值,你需要根据你的需求转成另一个东西,可以是图片、对象等等都行传入的是object,传出的也是object,使用值转换器需要继承接口:IValueConverter里面有两个方法Convert和 ConvertBackConvert很好理解:你把xaml中某个对象中的某个属性或其他值传递到Value......
  • 如何通过canvas实现粗细不同的电子签名
    想要实现一个电子签名,可以支持鼠标签名,还能类似书法效果线条有粗有细,同时可以导出成图片.一、实现连贯的划线1)首先需要注册鼠标下压、鼠标放开、鼠标移出和鼠标移动事件,通过鼠标下压赋值downFlag标记开始绘制2) 鼠标移动时,将当前坐标位置传入绘制方法,通过lineTo方法......
  • 【WPF学习】05 数据绑定
    如何实现WPF窗口内元素控件之间的数据绑定传统方式——先在XAML界面为对应控件设置建立相互关联所需要的属性,再在窗口后台编写业务代码这里以一个滑动条slider和三个文本框textbox之间的数据绑定为例:按照传统方式: 后台业务代码: 但在WPF里我们无需编写这种数据转换和传值......
  • 【WPF学习】04 数据模板
    相对于上一节控件模板ControlTemplate定义的是控件的外观及行为,数据模板DataTemplate定义的是数据的可视化结构DataTemplate允许我们实现通过数据绑定来达到数据驱动UI显示的效果在下面的实例中,我们首先声明一个包含颜色代码Code和颜色名称Name两个字段的一个构造Color类,再建立......
  • 【WPF学习】03 控件模板
    查看控件样式具体属性在VirtualStudio中,我们可以通过文档大纲找到具体元素控件,右键选择“编辑模板--编辑副本”可以查看该控件当前的样式具体属性设置,再未对控件自定义样式的时候通过这种方法查看到的即为系统为该控件预设的样式属性由此再注释几个属性:ContentPresenter定......
  • 浅谈两种前端截图方式:Canvas截图 vs SVG截图
    背景如今很多网站都引入截图功能,可用于问题反馈、内容分享等实用需求,而前端截图也不知不觉成为了首选。今天为大家推荐两种前端截图方式,虽然有些局限,但是也能应付大部分项目需求。Canvas截图:html2canvasSVG截图:rasterizehtml原理首先来谈下两种前端截图方式的原理,虽然实现方式不......