把wpf的窗体保存为png图片

news2024/11/24 20:43:02

昨晚在stack  overflow刷问题时看到有这个问题,今天早上刚好来尝试学习一下

stack overflow的链接如下:

c# - How to render a WPF UserControl to a bitmap without creating a window - Stack Overflow

测试步骤如下:

1  新建.net framework 3.5的wpf窗体程序

2 默认的窗体的xaml代码如下:

<Window x:Class="WpfDemo.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:WpfDemo"
        xmlns:s="clr-namespace:System;assembly=mscorlib"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <StackPanel HorizontalAlignment="Left">
            <TextBox>123455</TextBox>
            <Button x:Name="btnEnter" Click="BtnEnter_Click" 
                    Content="确定">
            </Button>
        </StackPanel>
        
    </Grid>
</Window>

窗体效果如下:

对应的后台代码如下:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Interop;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfDemo
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void BtnEnter_Click(object sender, RoutedEventArgs e)
        {
            RenderControl(this);
            MessageBox.Show("保存完成");
        }

        void RenderControl(Control renderControl)
        {
            RenderTargetBitmap bmp = new RenderTargetBitmap((int)renderControl.Width, (int)renderControl.Height, 0, 0, PixelFormats.Pbgra32);

            bmp.Render(renderControl);

            var encoder = new PngBitmapEncoder();

            encoder.Frames.Add(BitmapFrame.Create(bmp));

            using (Stream stm = File.Create("test.png"))
                encoder.Save(stm);
        }
        

    }
}

3  运行程序,点击确定按钮,会在bin/Debug目录下生成MainWindow窗体对应的png图片,png图片名称为test.png,如下图:

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

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

相关文章

【双指针+简化去重操作】【int运算溢出】Leetcode 18 四数之和

【双指针简化去重操作】【int运算范围】Leetcode 18 四数之和 解法1 仍然用双指针法 就是在三数求和的基础上扩展一个外层循环 ----------------------题目链接---------------------- ----------------------解析链接---------------------- 解法1 仍然用双指针法 就是在三数…

元宇宙初体验:探秘各元宇宙游戏看点与玩法

元宇宙&#xff08;Metaverse&#xff09;是一个虚拟世界&#xff0c;结合了虚拟现实&#xff08;VR&#xff09;、增强现实&#xff08;AR&#xff09;、区块链、人工智能等技术&#xff0c;为用户提供沉浸式、互动式的体验。随着技术的不断发展&#xff0c;如今&#xff0c;元…

SAP中信息记录未维护工厂导致的成本核算错误

近期遇到一例寄售物料成本核算中&#xff0c;不能确定价格的问题反馈。 由于寄售物料的成本核算测策略是在信息记录中取价&#xff0c;因此&#xff0c;首先想到会不会是这里的问题&#xff0c;按之前的经验&#xff0c;分别检查了供应商&#xff08;是否冻结&#xff09;&…

1300*C. Product of Three Numbers(质数数学)

Problem - 1294C - Codeforces 解析&#xff1a; 首先这个数肯定不是质数&#xff0c;然后找到第一个因子p&#xff0c;对于n/p再判断质数&#xff0c;然后找到另外两个因子即可。 注意三个因子不能相同。 #include<bits/stdc.h> using namespace std; #define int long…

2024有哪些免费的苹果mac电脑系统清理软件?

基本上&#xff0c;不管是win版还是Mac版的电脑&#xff0c;其装机必备就是一款电脑系统清理软件&#xff0c;就比如Mac&#xff0c;目前在市面上&#xff0c;电脑系统清理软件是非常多的。 对于不熟悉系统的用户来说&#xff0c;使用一些小众工具&#xff0c;往往很多用户都不…

UnityShader(五)

这次要用表面着色器实现一个水的特效。先翻到最下边看代码&#xff0c;看不懂再看下面的解释。 首先第一步要实现水的深浅判断&#xff0c;实现深水区和浅水区的区分。 这里需要用到深度图的概念。不去说太多概念&#xff0c;只去说怎么实现的&#xff0c;首先我们的水面是在…

宠物商店系统《宠物之家》,巨完善

源码下载地址 支持&#xff1a;远程部署/安装/调试、讲解、二次开发/修改/定制 系统分为用户端和管理员端。 截图中有些图片加载失败&#xff0c;是因为没有上传图片&#xff0c;登录管理员账号上传图片后&#xff0c;图片显示会变成正常。 web的宠物商城系统《宠物之家》。系…

什么是DDD领域驱动设计

一、DDD背景 2003 年埃里克埃文斯&#xff08;Eric Evans&#xff09;发表了《领域驱动设计》&#xff08;Domain-Driven Design –Tackling Complexity in the Heart of Software&#xff09;这本书&#xff0c;从此领域驱动设计&#xff08;Domain Driven Design&#xff0c…

SpringCloud 微服务全栈体系(十二)

第十一章 分布式搜索引擎 elasticsearch 一、初识 elasticsearch 1. 了解 ES 1.1 elasticsearch 的作用 elasticsearch 是一款非常强大的开源搜索引擎&#xff0c;具备非常多强大功能&#xff0c;可以帮助我们从海量数据中快速找到需要的内容 例如&#xff1a; 在 GitHub 搜…

Linux Shell和权限

目录 Shell命令及运行原理 权限 1.文件基本属性 2.文件权限值的表示方法 3.文件访问权限的相关设置方法 3.(1)chmod 组名修改 3.(2)chmod 二进制修改 3.(3)chown 3.(4)chgrp 3.(5)umask 4.目录权限 Shell命令及运行原理 Linux的操作系统&#xff0c;狭义上是…

C++常用格式化输出转换

在C语言中可以用printf以一定的格式打印字符&#xff0c;C当然也可以。 输入输出及命名空间还不太了解的小伙伴可以看一看C入门讲解第一篇。  在C中&#xff0c;可以用流操作符&#xff08;stream manipulators&#xff09;控制数据的输出格式&#xff0c;这些流操作符定义在2…

提升家庭自动化级别:使用HomeAssistant添加HACS插件,实现对米家、HomeKit等智能家居设备的公网控制

提升家庭自动化级别&#xff1a;使用HomeAssistant添加HACS插件&#xff0c;实现对米家、HomeKit等智能家居设备的公网控制 文章目录 提升家庭自动化级别&#xff1a;使用HomeAssistant添加HACS插件&#xff0c;实现对米家、HomeKit等智能家居设备的公网控制基本条件一、下载HA…

游戏、电影、动画、电视广播还是现场娱乐,xsens都会随时随地为您提供准确的动作捕捉

MVN 动画释放你的创造力 无论是游戏、电影、动画、电视广播还是现场娱乐&#xff0c;MVN Animate都会随时随地为您提供准确的动作捕捉。其先进的惯性技术为您在工作室内外提供精准的生产数据&#xff01; 认识 MVN Animate 实时传输所有数据 MVN动画的专有动作捕捉软件可以直…

上海:竹云董事长董宁受邀在第三届“双区驱动,打造全球经济新引擎”国际合作论坛发言

作为中国最具活力的两大重要经济带&#xff0c;粤港澳和长三角两大湾区2022年GDP总量超过42万亿&#xff0c;占全国GDP总量的35%&#xff0c;对中国经济的重要性举足轻重。中国国际进口博览会是我国主动向世界开放市场的重大举措&#xff0c;是一个推动两地开放合作&#xff0c…

电脑自动重启是什么原因?教你快速定位问题

电脑是我们日常生活和工作中不可或缺的工具&#xff0c;但有时它们会出现问题&#xff0c;其中之一是自动重启。这种情况可能会影响您的工作效率和数据的安全。可是您知道电脑自动重启是什么原因吗&#xff1f;在本文中&#xff0c;我们将深入研究电脑自动重启的可能原因&#…

Spring IoCDI入门

一&#xff1a;Spring IoC&DI概念 (1)Spring概念 &#x1f497;Spring是包含了众多工具方法的IoC容器&#xff0c;是一个开源框架&#xff0c;让我们的开发更加简单 &#x1f31f;Spring的两大核心和特点&#xff1a;IoC和AOP (2)IoC的介绍 1.概念 &#x1f497;IoC: Inv…

【算法与数据结构】77、LeetCode组合

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;如果k是固定的&#xff0c;最直接的方法就是建立k个for循环&#xff0c;将结果全部压入result容器中。…

Verilog刷题[hdlbits] :Always if2

题目&#xff1a;Always if2 A common source of errors: How to avoid making latches 一个常见的错误来源:如何避免产生latches When designing circuits, you must think first in terms of circuits: 在设计电路时&#xff0c;必须首先考虑电路: I want this logic gate…

【Spring】c命名和p命名空间注入

p命名空间注入 导入p名称空间 xmlns:p"http://www.springframework.org/schema/p"直接输入p就会有相关的属性弹出 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xml…