WPF:保存窗口当前状态截图方法
2015-01-28 17:37
363 查看
在制作软件使用手册或者操作示范市,比较常用方式有截图和视频制作。如果软件内置当前状态的截图和操作视频的导出功能,则将极大简化这方面的工作。使用wpf编写的UI界面,截图的导出功能逻辑相对简单,通用的实现步骤如下:
1、构建窗体与相关实现逻辑;
2、构建窗体的封装容器,包含窗体视图、DrawingVisual字段和窗体大小字段;
3、初始化dv的大小属性与窗体保持一致,并设置缩放比例:
4、保存截图到RenderTargetBitmap对象中。
this.renderTargetBitmap.Clear();
this.renderTargetBitmap.Render(this.dv);
通过构建通用的窗体封装容器,即可在需要该功能的所有软件中集成截图导出功能了。
1、构建窗体与相关实现逻辑;
2、构建窗体的封装容器,包含窗体视图、DrawingVisual字段和窗体大小字段;
private readonly DrawingVisual dv; private readonly TestView previewControl; private readonly Rect controlSize; private readonly RenderTargetBitmap renderTargetBitmap;
3、初始化dv的大小属性与窗体保持一致,并设置缩放比例:
this.dv = new DrawingVisual(); Size size = new Size(Width, Height); if (scale > 1.0) { this.dv.Transform = new ScaleTransform(1.0 / scale, 1.0 / scale); size.Width *= scale; size.Height *= scale; } this.controlSize = new Rect(size);
4、保存截图到RenderTargetBitmap对象中。
using (DrawingContext drawingContext = this.dv.RenderOpen()) { VisualBrush visualBrush = new VisualBrush(this.previewControl); drawingContext.DrawRectangle(visualBrush, null, this.controlSize); }
this.renderTargetBitmap.Clear();
this.renderTargetBitmap.Render(this.dv);
通过构建通用的窗体封装容器,即可在需要该功能的所有软件中集成截图导出功能了。
相关文章推荐
- wpf 根据当前控件,查找父窗口,调用父窗口的方法
- 解决C# 截取当前程序窗口指定位置截图的实现方法
- 【git】git保存当前状态切换分支的方法
- 2009年6月小记(group by统计合并,js关闭本窗口,wcf捕捉错误,便宜的域名解析方法,当前外网IP)
- 完成了WF工作流持久化和对持久化介质数据的加载, 但是仅仅用持久化,不能够保存工作流当前的执行状态,需要跟踪服务支持,怎样使用Tracing 服务呢?
- PB里协调多数据窗口数据操纵的一种方法(即多Tab标签可同时保存)
- .NET20 一种简单的窗口控件UI状态控制方法
- c# .net 如何截取当前程序窗口指定位置的截图
- .NET20 一种简单的窗口控件UI状态控制方法
- (HB.CN分享)详细介绍ASP.NET状态保存方法
- 详细介绍ASP.NET状态保存方法
- [delphi技术]实现保存窗口上的所有Edit和checkbox状态的类
- 我用showmodaldialog打开窗口,编辑数据保存后,但虽然数据库里的数据更新了,第二次再showmodaldialog打开窗口时数据并不是更新的状态:
- .NET2.0 一种简单的窗口控件UI状态控制方法
- 关于IE登录FTP站点,选择"保存密码"后,登录窗口不在出现的解决方法
- 详细介绍ASP.NET状态保存方法
- 零代码保存窗口运行状态
- .NET20 一种简单的窗口控件UI状态控制方法
- ASP.NET状态保存状态的方法
- 完成了WF工作流持久化和对持久化介质数据的加载, 但是仅仅用持久化,不能够保存工作流当前的执行状态,需要跟踪服务支持,怎样使用Tracing 服务呢?