博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF备忘录(6)WPF实现打印功能
阅读量:5955 次
发布时间:2019-06-19

本文共 2286 字,大约阅读时间需要 7 分钟。

  在WPF 中可以通过 类方便的实现应用程序打印功能,本文将使用一个简单实例进行演示。首先在VS中编辑一个图形(如下图所示)。

Design

     将需要打印的内容放入同一个<Canvas>中,并起名为“printArea”,打印按键一般不是我们希望打印出来的内容,则将其放在<Canvas>外面。

Visual Studio 2010

接下来编写Button_Click 事件,由于我们要打印<Canvas>所包含的内容,所以要通过PrintVisual 打印Visual 对象。

private void Button_Click(object sender, RoutedEventArgs e){    PrintDialog dialog = new PrintDialog();    if (dialog.ShowDialog() == true)    {         dialog.PrintVisual(printArea, "Print Test");     }}

运行程序,点击“Print”按键,弹出打印设置窗口,打印到XPS看看效果。

Print

如下图所示,打印结果中只有<Canvas>中的内容。

XPS

WPF 打印控件 无弹框打印

WPF中打印用到了 PrintDialog类。

其中设置打印属性的是PrintTicket,管理打印机的是PrintQueue。

实例如下:

public class PrintDialogHelper{private const string PrintServerName = "YULIN-PC";private const string PrintName = "HP LaserJet M1522 series PCL6 Class Driver";public PrintDialogHelper(){}/// /// 打印控件/// /// public void PrintVisual(FrameworkElement element){var printDialog = new PrintDialog();SetPrintProperty(printDialog);var printQueue = SelectedPrintServer(PrintServerName, PrintName);if (printQueue != null){printDialog.PrintQueue = printQueue;printDialog.PrintVisual(element, "");}}/// /// 查找并获取打印机/// /// 服务器名字: Lee-pc/// 打印机名字:Hp laserjet m1522 mfp series pcl 6 /// 
public PrintQueue SelectedPrintServer(string printerServerName, string printerName){try{var printers = PrinterSettings.InstalledPrinters;//获取本机上的所有打印机PrintServer printServer = null;foreach (string printer in printers){if (printer.Contains(printerName))printServer = new PrintServer("\\\\" + printerServerName);}if (printServer == null) return null;//没有找到打印机服务器var printQueue = printServer.GetPrintQueue(printerName);return printQueue;}catch (Exception){return null;//没有找到打印机}}/// /// 设置打印格式/// /// 打印文档/// 打印纸张大小 a4/// 打印方向 竖向public void SetPrintProperty(PrintDialog printDialog, PageMediaSizeName pageSize = PageMediaSizeName.ISOA4, PageOrientation pageOrientation = PageOrientation.Portrait){var printTicket = printDialog.PrintTicket;printTicket.PageMediaSize = new PageMediaSize(pageSize);//A4纸printTicket.PageOrientation = pageOrientation;//默认竖向打印}}

 

转载地址:http://tyexx.baihongyu.com/

你可能感兴趣的文章
iOS仿支付宝芝麻信用仪表盘效果
查看>>
C#中combobox不可编辑与不可选择
查看>>
java自学之路-day19
查看>>
01-HTML基础与进阶-day3-录像236
查看>>
ssh 免密码登录
查看>>
strcpy函数的C/C++实现
查看>>
CSS浏览器兼容问题
查看>>
-Xlint:deprecation
查看>>
forEach与map
查看>>
concurrent.futures 使用及解析
查看>>
python协程
查看>>
面向对象的三大特性
查看>>
前台之boostrap
查看>>
项目 11 部署与运行
查看>>
绘制折线图
查看>>
django项目基础
查看>>
Linux 基本权限管理
查看>>
用css去除chrome、safari等webikt内核浏览器对控件默认样式
查看>>
PHP —— 识别运算符实现逻辑比较
查看>>
Powershell都有哪些好用的技能?
查看>>