wpf 复制到粘贴板_将WPF UI单元复制到剪贴板

本文介绍了如何在WPF应用中实现将UI单元以图片形式复制到剪贴板,从而方便地制作应用程序界面的快照。通过定义自定义命令`CopyUI`,结合`RenderTargetBitmap`和`DrawingVisual`,实现UI元素的截图并复制到系统剪贴板,以供在其他文档中使用。
摘要由CSDN通过智能技术生成

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

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

... ...

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

private voidCommandBinding_CanExecute(objectsender, CanExecuteRoutedEventArgse)

{

e.CanExecute = true;

}

private voidCommandBinding_Executed(objectsender, ExecutedRoutedEventArgse)

{

CopyUIElementToClipboard(this.empCard);

}

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

public static voidCopyUIElementToClipboard(FrameworkElementui)

{

doublewidth = ui.ActualWidth;

doubleheight = ui.ActualHeight;

RenderTargetBitmapbmp = newRenderTargetBitmap((int)Math.Round(width),

(int)Math.Round(height), 96, 96, PixelFormats.Default);

DrawingVisualdv = newDrawingVisual();

using(DrawingContextdc = dv.RenderOpen())

{

VisualBrushvb = newVisualBrush(ui);

dc.DrawRectangle(vb, null,

newRect(newPoint(), newSize(width, height)));

}

bmp.Render(dv);

Clipboard.SetImage(bmp);

}

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值