WPF 对控件截图

突然需要一个Logo,找又找不到,就自己做喽,首先想到的是ps,简单方便,转念一想,wpf搞这个不是很简单么?直接弄做好,截图一下不就行了。。。

开工了,先在iconfont上找了个图标:

是这样的

然后取名:WPF开发者

然后新建一个工程,主界面就是这样了:

点击截图按钮 ,对包含图标和字体的Grid截图,保存成png,透明背景的哦

窗体代码:

<Window x:Class="WPFDemos.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:WPFDemos"mc:Ignorable="d"x:Name="widnow"WindowStartupLocation="CenterScreen"UseLayoutRounding="True"Background="#3e3e3e"Title="截图示例" Height="300" Width="500"><Grid><Grid x:Name="target" HorizontalAlignment="Center" VerticalAlignment="Center" Background="Transparent"><StackPanel Orientation="Horizontal" Margin="5 0" ><Image x:Name="str" Width="32" Height="32" Source="/vs.png" Margin="5 0"/><TextBlock Text="WPF开发者" VerticalAlignment="Center" Foreground="White" FontSize="25" FontWeight="Bold" FontFamily="Courier New"/></StackPanel></Grid><Button HorizontalAlignment="Right" VerticalAlignment="Center" Foreground="White" Padding="10" Click="Button_Click" Background="Transparent" Margin="50" Content="截图"/></Grid>
</Window>

窗体后台代码:

using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Imaging;namespace WPFDemos
{public partial class MainWindow : Window{public MainWindow(){InitializeComponent();}private void Button_Click(object sender, RoutedEventArgs e){DrawingVisual drawingVisual = new DrawingVisual();using (DrawingContext context = drawingVisual.RenderOpen()){VisualBrush brush = new VisualBrush(target) { Stretch = Stretch.None };context.DrawRectangle(brush, null, new Rect(0, 0, target.ActualWidth, target.ActualHeight));context.Close();}RenderTargetBitmap targetBitmap = new RenderTargetBitmap((int)target.ActualWidth, (int)target.ActualHeight, 96d, 96d, PixelFormats.Default);targetBitmap.Render(drawingVisual);PngBitmapEncoder saveEncoder = new PngBitmapEncoder();saveEncoder.Frames.Add(BitmapFrame.Create(targetBitmap));string tempFile = $"d:\\test\\test.png";System.IO.FileStream fs = System.IO.File.Open(tempFile, System.IO.FileMode.OpenOrCreate);saveEncoder.Save(fs);fs.Close();}}
}

截图后,保存在D盘,截出来是这样的:

-------------------------------------

结束喽

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303331.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

session、cookie、隐藏域、url参数传递四种会话及跟踪方式

1.Session HttpSession session request.getSession(); session.setAttribute("name", "zhangsan"); session.setAttribute("pwd", "aaa"); String name (String) session.getAttribute("name"); 2.cookie: ? 设置 C…

福利来袭,送你105例C语言实战

前几周&#xff0c;TIOBE 编程语言社区最新发布了 2018 年 6 月排行榜&#xff0c;和5月份相比&#xff0c;C语言的增长率达到8.09%&#xff0c;是排行前20编程语言中增长率最大的&#xff0c;可见学C语言的人越来越多。小编一直有意识地收集了一些编程语言的实战例子&#xff…

php复制整个文件夹,PHP实现递归复制整个文件夹的类实例

本文实例讲述了PHP实现递归复制整个文件夹的类。分享给大家供大家参考。具体如下&#xff1a;/** 文件夹复制类*/class CopyFile{public $fromFile;public $toFile;/** $fromFile 要复制谁* $toFile 复制到那*/function copyFile($fromFile,$toFile){$this->CreateFolder($t…

关于c/c++/obj-c的混合使用 (2010-06-22 10:05:33)

关于c/c/obj-c的混合使用 (2010-06-22 10:05:33)转载标签&#xff1a; 杂谈分类&#xff1a; iPhone开发1&#xff09;obj-c的编译器处理后缀为m的文件时&#xff0c;可以识别obj-c和c的代码&#xff0c;处理mm文件可以识别obj-c,c,c代码&#xff0c;但cpp文件必须只能用 c/c代…

你知道WPF这三大模板实例运用吗?

1、介绍对于Windows桌面端应用开发来讲&#xff0c;WPF以其界面渲染的特殊性&#xff0c;灵活的界面布局而让人津津乐道&#xff0c;因为它能为用户提供更好的交互体验。如何利用WPF开发出让人赏心悦目的界面与功能呢&#xff1f;这里不仅仅只是布局的功劳&#xff0c;很大一部…

如何判断程序员是在装逼还是有真本事?

程序员是一个十分特殊的群体&#xff0c;他们十分内敛、腼腆&#xff0c;但是只要一开口就能判断出来&#xff0c;到底是在装逼还是有真本事&#xff0c;不信咱们往下看&#xff01;1、这个功能是小case&#xff0c;分分钟搞定一般情况下&#xff0c;程序员在拿到一个新的功能需…

php header会重定向吗,php – 可以依靠header()重定向来结束程序流吗?

不,标题不会结束程序执行.你必须自己以退出或死亡结束它.您可以自己尝试这样的事情&#xff1a;file_put_contents(/tmp/test, 1);header(Location: http://www.emilvikstrom.se/);file_put_contents(/tmp/test, 2);?>检查/ tmp / test的内容,你会发现它是2.我也试过这个脚…

tac

tac名称&#xff1a;以相反的方式连接和打印文件&#xff0c;和cat输出的内容相反总揽:tac [Options]…… [File]……描述&#xff1a;将每个指定的文件File的内容输出到标准输出上&#xff0c;文件的最后一行最先输出&#xff0c;最先一行最后输出。若命令行中没有指定文件或指…

怎样借助Python爬虫给宝宝起个好名字

Beginning每个人一生中都会遇到一件事情&#xff0c;在事情出现之前不会关心&#xff0c;但是事情一旦来临就发现它极其重要&#xff0c;并且需要在很短的时间内做出重大决定&#xff0c;那就是给自己的新生宝宝起个名字。因为要在孩子出生后两周内起个名字&#xff08;需要办理…

CAP-分布式事务的解决方案

CAP 是一个基于 .NET Standard 的 C# 库&#xff0c;它是一种处理分布式事务的解决方案&#xff0c;同样具有 EventBus 的功能&#xff0c;它具有轻量级、易使用、高性能等特点。https://github.com/dotnetcore/CAP在我们构建 SOA 或者 微服务系统的过程中&#xff0c;我们通常…

php 初始二维数组长度,php二维数组排序与默认自然排序的方法介绍

php二维数组排序函数&#xff0c;默认自然排序&#xff0c;即sort排序。这里可以指定按二维数组中的某个值进行多种方法排序&#xff0c;具体看下面的程序注释。 代码如下:/*** function 二维数组自然排序* author www.phpernote.com* param array $array 需要排序的数组(二维)…

做操作系统的公司,为什么不能把系统安全做好?

易用和安全&#xff0c;从来都是一对矛盾&#xff0c;过分考虑方便用户操作&#xff0c;就很容易带来系统隐患。向上兼容也会带来系统的复杂性&#xff0c;复杂的系统漏洞一定多。对微软来说&#xff0c;它的每一个版本&#xff0c;都需要考虑向下兼容&#xff0c;比如Win95是3…

我是怎么用机器学习技术找到女票的

机器学习在我们生活中的用处有多大&#xff0c;就不用我们多说了&#xff0c;大到医疗诊断&#xff0c;小到手机应用&#xff0c;机器学习都应用的风风火火。但是用机器学习帮自己在学校找对象&#xff0c;你听说过吗?最近滑铁卢大学一位叫 Bai Li 的留学生(李白?应是中国同胞…

.Net5 WPF快速入门系列教程

一、概要在工作中大家会遇到需要学习新的技术或者临时被抽调到新的项目当中进行开发。通常这样的情况比较紧急没有那么多的时间去看书学习。所以这里向wpf技术栈的开发者分享一套wpf教程&#xff0c;基于.net5框架进行开发本系列每一期视频长度平均在15分钟左右&#xff0c;并利…

php 重定向数据不丢失,PHP重定向如何实现数据不丢失?

PHP重定向如何实现数据不丢失&#xff1f;首先获取要保存的数据&#xff1b;$data [username > guanhuicoder,redirect_url > ./index.phpemail > guanhuicodercode.com];然后将数据转为JSON字符串&#xff0c;并将其储存在Session中&#xff1b;$data [username &g…

数据“被”覆盖有假象,SQL数据库恢复终极绝招(数据恢复高级技术)

很多数据恢复工程师包括一些数据恢复技术爱好者经常会问同样一个问题&#xff1a;“数据一旦被覆盖了&#xff0c;还能不能恢复呀&#xff1f;我听说国外能恢复被覆盖以后的数据&#xff0c;据说只要是覆盖操作在7次以内&#xff0c;都能恢复出来&#xff0c;国内有没有这种技术…

北大教授郑也夫斗胆谈了7个天大的问题(非常狠,也很现实)

我是一个小人物&#xff0c;今天斗胆谈一个天大的问题——中国教育。中国教育是一个天大的问题&#xff0c;不是说我们有多大的本领把它办得多么好&#xff0c;而是我们居然可以把它办得这样糟&#xff0c;这是一个很沉痛的话题。——北大教授、社会学家郑也夫1不输在起跑线&am…

.NET 6 Preview 3 中 ASP.NET Core 的更新和改进

原文&#xff1a;bit.ly/2Qb56NP作者&#xff1a;Daniel Roth译者&#xff1a;精致码农-王亮.NET 6 预览版 3 现已推出&#xff0c;其中包括许多对新的 ASP.NET Core 改进。以下是本次预览版的新内容&#xff1a;更小的 SignalR、Blazor Server、MessagePack 脚本文件启用 Redi…

php 图片消除锯齿,ps如何消除边缘锯齿

PS消除边缘锯齿的方法&#xff1a;打开图片选择魔棒工具&#xff0c;在窗口中解锁图层然后将鼠标移动到背景区域&#xff0c;左键单击它再按删除键&#xff0c;然后再右键点击人像&#xff0c;选择羽化&#xff0c;将羽化半径设置为4&#xff0c;点击确定后按删除键&#xff0c…

构建根文件系统(2)Busybox init 进程

讲init进程的启动过程从/etc/inittab出发。 内核启动init进程时已经打开/dev/console设备作为控制台&#xff0c;一般情况下Busybox init程序就使用/dev/console&#xff0c; 如果内核启动init进程的同时设置了环境变量CONSOLE或console&#xff0c;则使用环境变量所指定的设备…