当前位置: 首页 > news >正文

WPF打印控件内容

当我们想打印控件内容时,如一个Grid中的内容,可以用WPF中PrintDialog类的PrintVisual()方法来实现

界面如下:

XAML代码如下

<Grid><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition Width="300"/></Grid.ColumnDefinitions><Grid Grid.Column="0"><Grid Width="800" Name="grid1"><TextBlock TextWrapping="Wrap" FontSize="15">Control authors who want to customize the arrange pass of layout processing should override this method. The implementation pattern should call M:System.Windows.UIElement.Arrange(System.Windows.Rect) on each visible child element, and pass the final desired size for each child element as the finalRect parameter. Parent elements should call M:System.Windows.UIElement.Arrange(System.Windows.Rect) on each child, otherwise the child elements will not be rendered.
Many derived classes offer implementations of this method. Prominent ones include: M:System.Windows.Window.ArrangeOverride(System.Windows.Size), M:System.Windows.Controls.Page.ArrangeOverride(System.Windows.Size) and M:System.Windows.Controls.Control.ArrangeOverride(System.Windows.Size).</TextBlock></Grid></Grid><Grid Grid.Column="1"><Button Height="30" VerticalAlignment="Top" Click="Button_Click">打印</Button></Grid></Grid>

当我们点击按钮时,进行打印

按钮事件:

           PrintDialog pd = new PrintDialog();if (pd.ShowDialog() == true){pd.PrintVisual(this.grid1, "");}

这时我们会发现,虽然 打印的内容是指定的,但打印的大小却是整个窗体的大小,而不仅仅是指定的区域大小。

然后我们就需要用到UIElement的Arrange 方法

MSDN上的解释是

定位子元素,并确定 UIElement 的大小。 父元素从它们的 ArrangeCore 实现(或者是 WPF 框架级别等效项)调用此方法,以便形成递归布局更新。此方法产生第二次布局更新。

修改后的代码如下:

1 if (pd.ShowDialog() == true)
2             {                
3                 this.grid1.Arrange(new Rect(new Size(grid1.ActualWidth, grid1.ActualHeight)));
4                 pd.PrintVisual(this.grid1, "");               
5             }

这样操作以后,打印的大小不再是整 个窗体的大小了,但打印完之后 ,控件 的位置却发生了变化 ,这时候我们只需要再调用一次Arrange方法,将它放回原来的位置就行了

 if (pd.ShowDialog() == true){               Window window = Window.GetWindow(grid1);Point point = grid1.TransformToAncestor(window).Transform(new Point(0, 0));//获取当前控件 的坐标this.grid1.Measure(new Size(grid1.ActualWidth,grid1.ActualHeight));this.grid1.Arrange(new Rect(new Size(grid1.ActualWidth, grid1.ActualHeight)));pd.PrintVisual(this.grid1, "");this.grid1.Arrange(new Rect(point.X, point.Y, grid1.ActualWidth, grid1.ActualHeight));//设置为原来的位置}

这样就可以打印控件 内容了。

如果 想对打印机进行设置,可以查找 WPF PrintDialog的使用方法,下面是简单的设置

                 PrintTicket pt = new PrintTicket();PageMediaSize p = new PageMediaSize(PageMediaSizeName.ISOA4);//pt.PageBorderless = PageBorderless.Unknown;pt.PageMediaSize = p;//pt.PageOrientation = PageOrientation.Portrait;pd.PrintTicket = pt;

相关文章:

WPF打印控件内容

当我们想打印控件内容时&#xff0c;如一个Grid中的内容&#xff0c;可以用WPF中PrintDialog类的PrintVisual()方法来实现 界面如下&#xff1a; XAML代码如下 <Grid><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition Width"300"…...

[C++][opencv]基于opencv实现photoshop算法图像剪切

【测试环境】 vs2019 opencv4.8.0 【效果演示】 【核心实现代码】 //图像剪切 //参数&#xff1a;src为源图像&#xff0c; dst为结果图像, rect为剪切区域 //返回值&#xff1a;返回0表示成功&#xff0c;否则返回错误代码 int imageCrop(InputArray src, OutputArray dst,…...

四十、大数据技术之Kafka3.x(3)

&#x1f33b;&#x1f33b; 目录 一、Kafka Broker1.1 Kafka Broker工作流程1.1.1 Zookeeper 存储的Kafka信息1.1.2 Kafka Broker 总体工作流程1.1.3 Broker 重要参数 1.2 生产经验——节点服役和退役1.2.1 服役新节点1.2.2 退役旧节点 1.3 Kafka 副本1.3.1 副本基本信息1.3.2…...

redis——基本命令

什么是Reids&#xff08;REmote Dictionary Server&#xff09; Redis是现在主流的数据库之一&#xff0c;是一个使用ANSI C编写的开源、包含多种数据结构、支持网络的、基于内存、可选持久性的键值对存储数据。 特性 1.速度快 &#xff1a;Redis的数据全部存储瑜内存中。 …...

pytorch实现单层线性回归模型

文章目录 简述代码重构要点 数学模型、运行结果数据构建与分批模型封装运行测试 简述 python使用 数值微分法 求梯度&#xff0c;实现单层线性回归-CSDN博客 python使用 计算图&#xff08;forward与backward&#xff09; 求梯度&#xff0c;实现单层线性回归-CSDN博客 数值微分…...

智能小家电能否利用亚马逊VC搭上跨境快车?——WAYLI威利跨境助力商家

智能小家电行业在全球化背景下&#xff0c;正迎来前所未有的发展机遇。亚马逊为品牌商和制造商提供的一站式服务平台&#xff0c;为智能小家电企业提供了搭乘跨境快车、拓展国际市场的绝佳机会。 首先&#xff0c;亚马逊VC平台能够帮助智能小家电企业简化与亚马逊的合作流程&am…...

顺丰科技25届秋季校园招聘常见问题答疑及校招网申测评笔试题型分析SHL题库Verify测评

Q&#xff1a;顺丰科技2025届校园招聘面向对象是&#xff1f; A&#xff1a;2025届应届毕业生&#xff0c;毕业时间段为2024年10月1日至2025年9月30日&#xff08;不满足以上毕业时间的同学可以关注顺丰科技社会招聘或实习生招聘&#xff09;。 Q&#xff1a;我可以投递几个岗…...

深入理解 Kibana 配置文件:一份详尽的指南

Kibana 是一个强大的数据可视化平台&#xff0c;它允许用户通过 Elasticsearch 轻松地探索和分析数据。Kibana 的配置文件 kibana.yml 是定制和优化 Kibana 行为的关键。在这篇博客中&#xff0c;我们将深入探讨 kibana.yml 文件中的各个配置项&#xff0c;并提供示例说明。 服…...

算法的学习笔记—链表中倒数第 K 个结点(牛客JZ22)

&#x1f600;前言 在编程过程中&#xff0c;链表是一种常见的数据结构&#xff0c;它能够高效地进行插入和删除操作。然而&#xff0c;遍历链表并找到特定节点是一个典型的挑战&#xff0c;尤其是当我们需要找到链表中倒数第 K 个节点时。本文将详细介绍如何使用双指针技术来解…...

聊聊场景及场景测试

在我们进行测试过程中&#xff0c;有一种黑盒测试叫场景测试&#xff0c;我们完全是从用户的角度去理解系统&#xff0c;从而可以挖掘用户的隐含需求。 场景是指用户会使用这个系统来完成预定目标的所有情况的集合。 场景本身也代表了用户的需求&#xff0c;所以我们可以认为…...

Spring Web MVC入门(中)

1. 请求 访问不同的路径, 就是发送不同的请求. 在发送请求时, 可能会带⼀些参数, 所以学习Spring的请求, 主要 是学习如何传递参数到后端以及后端如何接收. 传递参数, 咱们主要是使⽤浏览器和Postman来模拟&#xff1b; 1.1 传递单个参数 接收单个参数&#xff0c;在Spring MV…...

Django后端架构开发:后台管理与会话技术详解

&#x1f31f; Django后端架构开发&#xff1a;后台管理与会话技术详解 &#x1f539; 后台管理&#xff1a;自定义模型类 Django的后台管理系统提供了强大的模型管理功能&#xff0c;你可以通过自定义模型类来控制模型在后台管理界面的显示和操作。自定义模型类通过继承admin…...

挑战Infiniband, 爆改Ethernet(2)

挑战Infiniband, 爆改Ethernet之物理层 前面说过UE为了挑战Infiniband在AI集群和HPC领域的优势地位&#xff0c;计划爆改以太网技术&#xff0c;以适应AI和HPC集群对高性能、可扩展网络的需求。正如UE联盟关于愿景的说明中宣称的&#xff1a;”提供一个完整的架构&#xff0c;通…...

Postman文件上传接口测试

接口介绍 返回示例 测试步骤 1.添加一个新请求&#xff0c;修改请求名&#xff0c;填写URL&#xff0c;选择请求方式 2.将剩下的media参数放在请求body里&#xff0c;选择form-data&#xff0c;选择key右边的类型为file类型&#xff0c;就会出现选择文件的按钮Select Files&a…...

stm32入门学习14-电源控制

有时候我们的程序中有些触发执行条件&#xff0c;有时这些触发频率很少&#xff0c;我们的程序就一直在循环&#xff0c;这样就很浪费电&#xff0c;我们可以通过PWR电源控制来实现低功耗模式&#xff0c;即只有在触发时才执行程序&#xff0c;其余时间可以关闭一些没必要的设备…...

[C++][opencv]基于opencv实现photoshop算法色相和饱和度调整

【测试环境】 vs2019 opencv4.8.0 【效果演示】 【核心实现代码】 HSL.hpp #ifndef OPENCV2_PS_HSL_HPP_ #define OPENCV2_PS_HSL_HPP_#include "opencv2/core.hpp" using namespace cv;namespace cv {enum HSL_COLOR {HSL_ALL,HSL_RED,HSL_YELLOW,HSL_GREEN,HS…...

Github 2024-08-16Java开源项目日报 Top10

根据Github Trendings的统计,今日(2024-08-16统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目10TypeScript项目1Ruby项目1Apache Dubbo: 高性能的Java开源RPC框架 创建周期:4441 天开发语言:Java协议类型:Apache License 2.0St…...

AI学习记录 - torch 的 matmul和dot的关联,也就是点乘和点积的联系

有用大佬们点点赞 1、两个一维向量点积 &#xff0c;求 词A 与 词A 之间的关联度 2、两个词向量之间求关联度&#xff0c;求 : 词A 与 词A 的关联度 5 词A 与 词B 的关联度 11 词B 与 词A 的关联度 11 词B 与 词B 的关联度 25 刚刚好和矩阵乘法符合&#xff1a; 3、什么是…...

leetcode 885. Spiral Matrix III

题目链接 You start at the cell (rStart, cStart) of an rows x cols grid facing east. The northwest corner is at the first row and column in the grid, and the southeast corner is at the last row and column. You will walk in a clockwise spiral shape to visi…...

mysql windows安装与远程连接配置

安装包在主页资源中 一、安装(此安装教程为“mysql-installer-community-5.7.41.0.msi”安装教程&#xff0c;安装到win10环境) 保持默认选项&#xff0c;点击”Next“。 点开第一行加号展开一路展开找到“MySQL Server 5,7,41 - X64”点击选中点击一下中间只想右侧的箭头看到…...

DeepSeek总结的将 Rust Delta Kernel 集成到 ClickHouse

来源&#xff1a;https://clickhouse.com/blog/integrating-rust-delta-kernel 将 Rust Delta Kernel 集成到 ClickHouse 作者: Melvyn Peignon, Kseniia Sumarokova, Ral Marn 日期: 2026年5月22日 阅读时间: 24分钟 除非你过去几年一直呆在没有互联网的洞穴里&#xff0c;否则…...

2026告别水印烦恼!免费图片去水印保姆级教程,从微信小程序到手机App一看就会

你是不是也遇到过这种抓狂的时刻&#xff1f;好不容易在小红书、抖音上看到一张绝美的壁纸、一个笑到岔气的表情包&#xff0c;兴致勃勃地保存下来&#xff0c;结果发现画面正中间或角落上&#xff0c;总趴着一个破坏美感的水印。想用来做PPT配图&#xff0c;水印太显眼&#x…...

2026年湖南旧房改造,原来老房升级智能家居有这些攻略?

引言随着智能家居的发展&#xff0c;越来越多湖南的旧房业主希望将老房升级为智能住宅。2026年&#xff0c;旧房改造智能家居有哪些实用攻略呢&#xff1f;华为鸿蒙智家株洲红星店凭借其独特的技术和产品优势&#xff0c;为旧房改造提供了优质的解决方案。旧房改造智能家居的必…...

5分钟部署开源翻译工具:让浏览器变身智能翻译助手

5分钟部署开源翻译工具&#xff1a;让浏览器变身智能翻译助手 【免费下载链接】deepl-chrome-extension A DeepL Translator Chrome extension 项目地址: https://gitcode.com/gh_mirrors/de/deepl-chrome-extension 还在为浏览外文网页时频繁切换翻译工具而烦恼吗&…...

AI 伪造图像在电信诈骗攻防中的应用与治理研究 —— 以韩国诱捕诈骗快递员案为例

摘要 2026 年 5 月 22 日韩国首尔西部地方法院审理的投资类电信诈骗案件中&#xff0c;受害人在遭遇假冒分析师诱导、虚假证券 APP 欺诈并已损失 1200 万韩元后&#xff0c;面对诈骗团伙以 “提现手续费” 为名进一步索要 1990 万韩元现金的行为&#xff0c;利用 AI 生成伪造现…...

为你的AI应用配置Taotoken实现自动故障转移与路由

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为你的AI应用配置Taotoken实现自动故障转移与路由 在构建依赖大模型API的应用时&#xff0c;服务的稳定性直接关系到终端用户的体验…...

next.js 开发中的水合(Hydration)问题

Next.js 16.2 React 19 完全规避水合问题开发规范完整指南 一、水合问题的根本原因 水合错误&#xff08;Hydration Mismatch&#xff09;发生的唯一根本原因是&#xff1a;服务端渲染生成的 HTML 与客户端首次渲染生成的虚拟 DOM 结构不一致。 React 19 对水合错误的检测更加…...

Taotoken官方价折扣与Token Plan套餐的实际节省效果分析

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken官方价折扣与Token Plan套餐的实际节省效果分析 1. 引言 在接入和使用大模型API时&#xff0c;成本是开发者与团队持续关…...

JMeter接口测试从零到实战:新手避坑指南与自动化闭环

1. 为什么接口测试不是“点点点”&#xff0c;而JMeter是多数人绕不开的第一把刀很多人刚接触接口测试时&#xff0c;第一反应是&#xff1a;“不就是用Postman发个请求、看个返回码吗&#xff1f;还要学啥工具&#xff1f;”我带过十几批测试新人&#xff0c;八成在入职前两周…...

027、原理图绘制进阶:总线、网络标号、层次图

027 原理图绘制进阶:总线、网络标号、层次图 从一块烧掉的板子说起 去年接手一个同事离职留下的项目,一块四层板,MCU挂了三片ADC、两片DAC、一个FPGA,外加一堆传感器。原理图打开那一刻,我差点把咖啡喷屏幕上——整张图就一张Sheet,密密麻麻的飞线像蜘蛛网,网络标号全…...