色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

將WPF UI單元復制到剪貼板

  大家在日常工作中應該遇到過這樣的問題:需要對應用程序界面進行截屏操作,然后將截屏內容拷貝到其他文檔中使用。通常情況下我們會使用一些截屏軟件或者“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>
<
KeyBinding Modifiers="Ctrl" Key="U" 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(new Point(), new Size(width, height)));
}
bmp.Render(dv);
Clipboard.SetImage(bmp);
}

  接下來運行程序,按“Ctrl+U” 對UI 進行復制。

image

  “Ctrl+V” 到Word 后的效果,這樣就可以比較方便的復制UI 結構,當然也可以復制程序中生成的柱狀圖,放到PPT中做為報告使用。

image

NET技術將WPF UI單元復制到剪貼板,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 迁安市| 花垣县| 临潭县| 莒南县| 黔江区| 寻乌县| 台南市| 鹤岗市| 丹寨县| 河东区| 雷州市| 奉节县| 和田县| 龙门县| 邹平县| 阆中市| 渭南市| 尖扎县| 商洛市| 海口市| 永康市| 河津市| 明星| 汪清县| 彰化县| 盐津县| 兴城市| 古浪县| 衡山县| 满城县| 绍兴县| 昌吉市| 阿拉善右旗| 肥城市| 绥江县| 泾源县| 滁州市| 石首市| 上犹县| 五指山市| 临高县|