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

C# WPF 打印机

C# WPF 打印机

  • 打印机接口
    • 打印文本
    • 打印图片
    • 打印机属性对话框
    • 设置默认打印机
    • 搜索打印机

打印机接口

  • PrintServer
  • PrintQueue
  • PrintDocument

打印文本

/// <summary>
/// 打印文本
/// </summary>
/// <param name="text"></param>
/// <param name="width"></param>
/// <param name="height"></param>
private void PrintText(string text, int width, int height)
{// 创建一个PrintDocument对象PrintDocument pd = new PrintDocument();// pd.DefaultPageSettings.Landscape = true;// pd.DefaultPageSettings.PrinterSettings.PrinterName = "Gprinter  GP-1134T";  // 指定打印机// 设置打印机任务的事件处理pd.PrintPage += (sender, e) =>{// 创建一个Bitmap对象,用于绘制文本                using (Bitmap bitmap = new Bitmap(width, height)){using (Graphics g = Graphics.FromImage(bitmap)){// 使用白色填充背景g.FillRectangle(System.Drawing.Brushes.White, 0, 0, width, height);// 设置打印文本的格式StringFormat format = new StringFormat();format.Alignment = StringAlignment.Center;format.LineAlignment = StringAlignment.Center;// 在位图上绘制文本g.DrawString(text, new Font("Arial", 12), System.Drawing.Brushes.Black, new RectangleF(0, 0, width, height), format);// 将位图发送到打印机e.Graphics.DrawImage(bitmap, 0, 0);                        }}   };// 开始打印try{pd.Print();}catch (Exception ex){Console.WriteLine(ex.Message);}
}

打印图片

/// <summary>/// 打印图片/// </summary>/// <param name="imagePath">图片文件路径</param>/// <param name="width">打印宽度像素</param>/// <param name="height">打印高度像素</param>private void PrintImage(string imagePath, int width, int height){if (File.Exists(imagePath)){PrintDocument pd = new PrintDocument();pd.DefaultPageSettings.Landscape = true;//pd.DefaultPageSettings.PrinterSettings.PrinterName = "Gprinter  GP-1134T";Image image = Image.FromFile(imagePath);// 设置打印机任务的事件处理pd.PrintPage += (sender, e) =>{// 创建一个Bitmap对象,用于绘制图片using (Bitmap bitmap = new Bitmap(width, height)){using (Graphics g = Graphics.FromImage(bitmap)){// 使用白色填充背景g.FillRectangle(System.Drawing.Brushes.Black, 0, 0, width, height);// 在位图上绘制图片g.DrawImage(image, 0, 0);// 将位图发送到打印机e.Graphics.DrawImage(bitmap, 0, 0);}}
#if falseImage i = Image.FromFile(imagePath);System.Drawing.Rectangle m = e.MarginBounds;if ((double)i.Width / (double)i.Height > (double)m.Width / (double)m.Height) // image is wider{m.Height = (int)((double)i.Height / (double)i.Width * (double)m.Width);}else{m.Width = (int)((double)i.Width / (double)i.Height * (double)m.Height);}e.Graphics.DrawImage(i, m);                    
#endif};// 开始打印try{pd.Print();}catch (Exception ex){Console.WriteLine(ex.Message);}}}

打印机属性对话框

private void btnPrintSettings_Click(object sender, RoutedEventArgs e)
{// 打印机属性对话框PrintDialog printDialog = new PrintDialog();if (printDialog.ShowDialog() == true){// 用户点击了打印Console.WriteLine("打印");}            
}

设置默认打印机

/// <summary>
/// 设置默认打印机
/// </summary>
/// <param name="printerName"></param>
public static void SetDefaultPrinter(string printerName)
{PrintServer printServer = new PrintServer(); // 默认的打印服务器PrintQueue printQueue = new PrintQueue(printServer, printerName); // 根据打印机名称创建打印队列// 设置为默认打印机printQueue.Commit();
}

搜索打印机

private void btnPrintSearch_Click(object sender, RoutedEventArgs e)
{// 获取打印机列表并添加到ComboBoxPrintServer printServer = new PrintServer();PrintQueueCollection printQueues = printServer.GetPrintQueues();cmboxPrintList.Items.Clear(); // ComboBox控件foreach (PrintQueue p in printQueues){cmboxPrintList.Items.Add(p.Name);}
}// 选择打印机
private void cmboxPrintList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{string pName = cmboxPrintList.SelectedItem as string;Console.WriteLine("选择打印机");if (pName != null){Console.WriteLine("默认打印机:" + pName);SetDefaultPrinter(pName);}
}

http://www.mrgr.cn/news/66940.html

相关文章:

  • 【Wi-Fi】802.11n Vs 802.11ac 整理
  • 云集电商:如何通过 OceanBase 实现降本 87.5%|OceanBase案例
  • 【LeetCode】【算法】234.回文链表
  • InsCode线上IDE推荐及使用指南
  • yolov8涨点系列之轻量化主干网络替换
  • LeetCode46. 全排列(2024秋季每日一题 57)
  • 淘宝反爬虫机制的主要手段有哪些?
  • 拒绝事后背锅:测试项目中的风险管理一定要知道
  • java面试2.0
  • 配电线路的监控环境故障预警
  • LN2220 2A 高效率升压 DC/DC 电压调整器
  • 测试平台常见前端问题-建议收藏备忘
  • 开发的角度认识一下防止模拟执行和反调试函数(RC4算法)
  • mysql约束和高级sql
  • 【三维重建】Semantic Gaussians:开放词汇的3DGS场景理解
  • 【CAP理论:概念、解释与应用】
  • 画动态爱心(Python-matplotlib)
  • Django的manage.py命令用法
  • element-plus table tableRowClassName 无效
  • 最新三维视觉下的扩散模型综述——Diffusion Models in 3D Vision: A Survey
  • windows10显示计算机设置,我的电脑,此电脑设置
  • 软媒市场自助发稿平台的优势解析
  • 怎样用云手机进行FB矩阵运营而不被封号?
  • 【Ag-Grid】 使用笔记 Vue3 + Vite(一)
  • Kafka自动生产消息软件(自动化测试Kafka)
  • gomarkdown漏洞CVE-2024-44337--手把手教你go-fuzz模糊测试引擎如何进行漏洞挖掘