将WPF UI单元复制到“.NET研究”剪贴板 狼人:

摘要:
通常情况下我们会使用一些截屏软件或者“Ctrl+PrtSc”,本篇将介绍如何在WPF程序中将UI单元直接以图片形式复制到剪贴板,以达到为应用程序界面制作快照的功能。以我之前做过的一个“WPF员工卡”的文章为例。privatevoidCommandBinding_CanExecute{e.CanExecute=true;}privatevoidCommandBinding_Executed{CopyUIElementToClipboard;}到这里有些朋友可能已经发现CommandBinding_Executed事件里CopyUIElementToClipboard方法才是关键部分。empCard是员工卡整体UI结构。“Ctrl+V”到Word后的效果,这样就可以比较方便的复制UI结构,当然也可以复制程序中生成的柱状图,放到PPT中做为报告使用。

大家在日常工作中应该遇到过这样的问题:需要对应用程序界面进行截屏操作,然后将截屏内容拷贝到其他文档中使用。通常情况下我们会使用一些截屏软件或者“Ctrl+PrtSc ”,本篇将介绍如何在WPF 程序中将UI 单元直接以图片形式复制到剪贴板,以达到为应用程序界面制作快照(Snapshot)的功能。

以我之前做过的一个“WPF 员工卡”的文章为例。首先,要为程序添加一个自定义命令(Command):CopyUI。该命令的快捷键方式为“上海网站建设Ctrl+U”,在命令中定义两种事件CanExecute、Executed。关于自定义命令可以参考这里

<Window.Resources>
<
Storyboard x:Key="flashClose">
... ...

</
Storyboard>
<
RoutedUICommand x:Key="CopyUI" Text="Copy WPF UI as Image" />
</
Window.Resources>
<
Window.InputBindings上海闵行企业网站制作span>>
<
KeyBinding Mo上海闵行企业网站设计与制作difiers="Ctrl" Key="U" <上海企业网站设计与制作span style="color: red;">Command
="{StaticResource CopyUI}"/>
</
Window.InputBindings>
<
Window.CommandBindings>
<
CommandBinding Command="{StaticResource CopyUI}"
CanExecute="CommandBinding_CanExecute"
Executed="CommandBinding_Executed"/>
</
Window.CommandBindings>

完成命令的定义后,就可以为它们添油加醋了。

private void CommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = true;
}
private void CommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
{
CopyUIElementToClipboard(this.empCard);
}

到这里有些朋友可能已经发现CommandBinding_Executed 事件里CopyUIElementToClipboard 方法才是关键部分。empCard 是员工卡整体UI 结构。通过CopyUIElementToClipboard 将WPF UI 单元绘制成图片并复制到剪贴板中,如下代码:

public static void CopyUIElementToClipboard(FrameworkElement ui)
{
double width = ui.ActualWidth;
double height = ui.ActualHeight;
RenderTargetBitmap bmp = new RenderTargetBitmap((int)Math.Round(width),
(int)Math.Round(height), 96, 96, PixelFormats.Default);
DrawingVisual dv = new DrawingVisual();
using (DrawingContext dc = dv.RenderOpen())
{
VisualBrush vb = new VisualBrush(ui);
dc.DrawRectangle(vb, null,
new Rect(上海企业网站制作le="color: blue;">new Point(), new Size(width, height)));
}
bmp.Render(dv);
Clipboard.SetImage(bmp);
}

接下来运行程序,按“Ctrl+U” 对UI 进行复制。

image

“Ctrl+V” 到Word 后的效果,这样就可以比较方便的复制UI 结构,当然也可以复制程序中生成的柱状图,放到PPT中做为报告使用。

image

免责声明:文章转载自《将WPF UI单元复制到“.NET研究”剪贴板 狼人:》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇如何禁止 iPhone Safari video标签视频自动全屏?【Grafana】Grafana模板自定义-1-创建选择框下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

DevExpress WPF界面控件

DevExpress WPF套件提供了Reveal Highlight和Acrylic效果 - 这些外观选项旨在模仿Windows UI应用程序的外观和样式。 DevExpress WPF v21.1高速下载 Reveal Highlight 使用RevealHighlightOptions静态类添加Reveal Highlight效果,您可以将此效果添加...

8天入门wpf(转)

8天入门wpf—— 第一天 基础概念介绍8天入门wpf—— 第二天 xaml详解8天入门wpf—— 第三天 样式8天入门wpf—— 第四天 模板8天入门wpf—— 第五天 数据绑定8天入门wpf—— 第六天 细说控件8天入门wpf—— 第七天 画刷8天入门wpf—— 第八天 最后的补充WPF 一个MVVM的简单例子 MVVM设计模式...

vmware station-ubuntu18.04 共享剪贴板

辞职在家休息,买了台新电脑,装个虚拟机,安装visual studio, android studio, qt, everything, noptepad++,hbuilder,ditto,xx-net这些神器之后装了vmware station 14 装了ubuntu18.04 用的过程中发现不能与win10 共享剪贴板; 以前也遇到过这种状况,只记得试...

WPF-悬浮窗(类似于360)

boss要求开发一个类似于360的悬浮窗,如下图所示: 目前采用的是wpf做的客户端,之前有个winform的项目,我参考了下,完成了wpf版的悬浮窗。 Height="52" Width="131" WindowStartupLocation="Manual" ShowInTaskbar="False" WindowStyle="None" W...

vs 中 vim vax 快捷键

高效率移动 在插入模式之外 基本上来说,你应该尽可能少的呆在插入模式里面,因为在插入模式里面VIM就像一个“哑巴”编辑器一样。很多新手都会一直呆在插入模式里面,因为这样易于使用。但VIM的强大之处在于他的命令行模式!你会发现,在你越来越了解VIM之后,你就会花越来越少的时间使用插入模式了。 使用 h,j,k,l 使用VIM高效率编辑的第一步,就是放弃使用...

WPF笔记(3)TreeView

TreeView表示的是层次化结构(hierarchical)数据。TreeView的每一项称为TreeViewItem。TreeViewItem既可以被定义成一个字符串,也可以是一个嵌套的Item对象集合。TreeView的类层次结构如下: ControlItemsControlHeaderedItemsControlMenuItemToolBarTre...