winform 自动获取默认打印机并打印图片

C# 如何实现打印图片 C#提供的打印类库PrintDocument 是如何实现打印图片的。 阅读详情
using System.Drawing;
using System.Drawing.Printing;

private void PrintImage(string imagePath)
{
    // 创建 PrintDocument 对象
    PrintDocument pd = new PrintDocument();

    // 设置打印机
    pd.PrinterSettings.PrinterName = GetDefaultPrinterName();

    // 设置打印控制器为 StandardPrintController,以禁用打印对话框
    pd.PrintController = new StandardPrintController();

    // 注册 PrintPage 事件处理程序
    pd.PrintPage += (sender, e) => PrintPageHandler(sender, e, imagePath);

    // 调用 Print 方法开始打印
    pd.Print();
}

private void PrintPageHandler(object sender, PrintPageEventArgs e, string imagePath)
{
    // 加载图片
    using (Image image = Image.FromFile(imagePath))
    {
        // 计算图片需要打印的区域
        Rectangle printArea = e.MarginBounds;

        // 将图片调整为适合打印区域的大小
        if (image.Width > printArea.Width || image.Height > printArea.Height)
        {
            float aspectRatio = (float)image.Width / (float)image.Height;
            int newWidth = printArea.Width;
            int newHeight = (int)(printArea.Width / aspectRatio);

            if (newHeight > printArea.Height)
            {
                newHeight = printArea.Height;
                newWidth = (int)(printArea.Height * aspectRatio);
            }

            printArea.Width = newWidth;
            printArea.Height = newHeight;
        }

        // 将图片绘制到打印区域上
        e.Graphics.DrawImage(image, printArea);
    }
}

//获取默认打印机名称
private string GetDefaultPrinterName()
{
    string defaultPrinterName = string.Empty;

    using (var printDocument = new PrintDocument())
    {
        defaultPrinterName = printDocument.PrinterSettings.PrinterName;
    }

    return defaultPrinterName;
}

在上述示例中,我们首先创建了一个 PrintDocument 对象,并使用 GetDefaultPrinterName() 方法获取到默认打印机的名称。然后,我们将打印控制器设置为 StandardPrintController,以禁用打印对话框。

接下来,我们通过注册 PrintPage 事件处理程序,在每一页准备好打印时触发。在事件处理程序中,我们加载要打印的图片,并计算出适合打印区域的大小。最后,我们使用 DrawImage 方法将图片绘制到打印区域上。

最后,我们调用 PrintImage() 方法并传入要打印的图片路径,即可自动获取默认打印机并进行打印。

请确保在使用前已经添加了对 System.Drawing 和 System.Drawing.Printing 命名空间的引用,并替换 imagePath 参数为实际的图片路径。

winform调用打印机winform调用打印机 winform调用打印机winform调用打印机winform调用打印机 立即下载

相关推荐

Winform(C#) 图片的放大、缩小、打印和导出

示例很简单,只包含图片的放大、缩小、打印和导出功能

C#Winform报表与打印技术——自定义报表的实现

本课程详细讲解在C#Winform程序里,对DataGridView展示的数据进行自定义报表格式的设计、预览、打印如何实现

SAP与泛微OA集成(半导体行业)

本项目通过SAP PO中间件集成SAP与泛微OA在半导体行业的应用,由于行业特殊性,广泛深入应用了RSA加密等特性

集信通 1164

winform打印机控制程序记录

准备一个 panel ,在里面放入 label ,将 label 的宽度设置为 1 或者 2 ,背景色改为黑色,就能得到一根直线,再放入几个 label 作为文本容器。将 printPreviewDialog 的 Document 属性设置为 刚刚添加的 printDocument。获得触摸屏发送到 MQTT 服务器的讯息,解析讯息为 JSON 格式。为 true 则将数据填充到表格,切换默认打印机,开始打印。有些回调函数不能直接访问控件的属性,这时就需要用到这个。如下图,以主题来区分机台。

NJJML的博客 1150

泛微OA表单开发实战:如何用JavaScript动态控制明细表的必填与可编辑属性

本文详细介绍了如何在泛微OA系统中使用JavaScript动态控制明细表字段的必填与可编辑属性。通过主表字段变更事件监听和明细表字段属性批量修改,实现智能化的表单交互,提升用户体验和系统灵活性。文章深入解析了关键API的使用方法,并提供了实战代码示例和最佳实践。

weixin_30955617的博客 549

Unity 2021 LTS安装避坑指南:从下载到第一个3D项目的完整流程

本文提供了一份详尽的Unity 2021 LTS安装与首个3D项目创建指南。内容涵盖从Unity Hub下载、版本选择、模块安装避坑,到编辑器界面解析、创建旋转立方体脚本的完整流程,旨在帮助初学者快速搭建稳定开发环境并上手核心操作。

mango的博客 310

winform打印图片

winform打印图片

任玉腾的博客 1466

机器人关节电机发热难题:从工程化角度拆解热管理解决方案(下)

摘要:本文系统分析了机器人关节电机与驱动系统的热管理方案,重点解决局部热点问题。针对不同功率场景提出了热管/均热板散热(适用于中小功率)和液冷散热(适用于高功率)的具体实施方案,详细比较了结构参数、材料选择、安装工艺和散热效果。特别强调了电机-驱动协同热管理的重要性,提出"工况联动+热路径共享"的核心理念,包括一体化散热结构设计和动态控制策略。最后介绍了热仿真与测试验证方法,确保方案的有效落地。通过系统级热管理,可显著降低温升(热点区域降温30-60℃),同时优化体积和能耗。

bother3000的博客 3329

c# winform 打印图像,PrintDialog打印并且设置打印纸张大小

//按下打印按钮 private void button3_Click(object sender, EventArgs e) { //打印图像 //显示打印设置对话框 PrintDialog MySettings = new PrintDialog(); MySettings.Docume...

黑色头发 2496

光学测量仿真软件:Zygo_(5).Zygo的数据处理与分析方法

通过上述综合案例,我们可以看到Zygo中的数据处理与分析方法是如何一步一步应用于实际数据的。从数据导入到预处理,再到滤波、表面分析、缺陷检测和数据可视化,每一步都至关重要,最终确保了数据的准确性和可靠性。处理后的数据还可以导出为多种格式,便于在其他软件中进行进一步的处理或报告。希望这个案例能够帮助您更好地理解和应用Zygo中的数据处理与分析方法。

kkchenjj的博客 947

昇腾,Ascend,NPU,mindie,镜像,部署vllm:第5篇,昇腾环境下部署蒸馏版deepseek-r1,并在dify中注册模型供应商

这两天没少折腾deepseek-r1。之前在A100上用ollama部署了一份DeepSeek-R1-Distill-Qwen-32B,感觉真的特别慢。现在,再用昇腾部署一遍,看看速度能不能更快。p.s. 类似的内容其实已经写了很多遍了。但感觉之前写得都太碎,不够顺畅。接着新模型写篇长文,把能包括的都包括进来。这样大家也不需要到处翻来翻去。

xiezhipu的博客 2450

打印系统开发(14)——WinForm开发(42)——C#启动打印机打印文件

C#启动打印机我总结了两种方法: 新建如图winForm窗体: 一、第一种方法:Process类方法 1、添加引用:using System.Diagnostics; 2、在按钮打印测试button4单击下写入如下代码: private void button4_Click(object sender, EventArgs e) { Process pro = new Pro...

qq_34573534的博客 1017

RH850从0搭建Autosar开发环境系列讲解 - 总目录

Davinci Autosar实战开发从0构建开发能力。OS,COM,DCM,BSWMM,ECUM,VLINK,XCP,MEMMAP等模块配置,带你熟悉运行的autosar代码,包括MICROSAR的启动运行,使用GreenHills生成运行的hex。

weixin_42412049的博客 1万+

打印系统开发(26)——WinForm开发(46)——使用PrintDocument进行打印

背景:   1.在winform中,需要直接调用打印机,进行打印处理 2.找了很多实现方法是web的处理,然后查了下度娘,发现可以使用自带类PrintDocument进行处理,所以就有了这篇文章 说明:   使用PrintDocument需要有几个步骤,如下:   1. 需要定义全局变量PrintDocument   2. 需要定义一个文本控件做处理   3. 在程序初始...

qq_34573534的博客 1831

Python白色飘雪(完整代码)

Python绘制白色飘雪动画的完整代码。

AIGC 3万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

C#之winform控制台打印输出、打印调试

开发winform的时候,使用控制台打印解决方法,需要先往主函数所在的源文件中加入以下内容。在C#的时候,使用的是Console.WriteLine("Hello World");// 允许调用控制台输出。/// 应用程序的主入口点。// 控制台输出,需加入此库。

lbaihao的专栏 7699

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Winform实现打印

在Winform中的打印主要可以通过三种方式来实现:一种是使用Winform提供的类,另一种是使用控件,还有一种就是利用水晶报表的打印。 打印控件主要优势是方便快捷,一般应用于简单、固定、单调的模板打印,其主要常用控件有: (1) PrintDocument:是一个可用于设置属性来描述有关打印的信息,并且可用于调用方法Print()或通过事件PrintPage来打印文档的组件。 (2) Print

Jam的专栏 2635

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C#调用打印机,打印图片

PrintPreviewDialog是打印预览对话框,需要传一个printDocument给它才可以显示该对话框PrintDocument是具体要打印的内容,可以是图片,也可以是加载文档,文字。代码如下: //打印 private void button5_Click(object sender, EventArgs e) { //获取或设...

水寒 1万+

c#:winform调用bartender实现打印(包含打印机的选择以及实际打印)

c#:winform调用bartender实现打印(包含打印机的选择以及实际打印)

weixin_46001736的博客 2722

c# winform 解决PictureBox 无法打印全部图片的问题

作者:沐汐 Vicky 出处:http://www.cnblogs.com/EasyInvoice 一、 问题描述 在页面使用PictureBox 加载资料图片后,点击“打印”,只能打印图片首页,较大图片则无法全部打印。 二、 原因分析 PictureBox中打印图片时没有设置继续打印相关属性,因此每次只能打印第1页。 三、解决方法 PictureBox控件增加打印全部页面属性,如果为True,表示打印c#教程全部页面;如果为False,保留原有逻辑不变。 在打印全部页面时,将控件的图片按页面大小切

chinaherolts2008的博客 921

winfrom打印图片文件

工作中存在需要把图片打印出来,现在记录代码实现方式。

CFGirl的博客 335

Winform窗体打印

Winform窗体打印

qq_27474555的博客 648

C# winform绘图图面打印功能

打印类代码如下: public class Printer { private DataGridView dataview; private PrintDocument printDoc; private Font printFontStyle; //打印有效区域的宽度 in...

aodou8125的博客 639

C#之winfrom打印图片

第一步: 拖一个printDocument控件到界面。打印按钮的代码:C# CODE: privatevoid button1_Click(object sender, EventArgs e)//执行打印 { PrintDialog MyPrintDg =new PrintDialog(); MyPrintDg.Document =...

weixin_30257433的博客 552

打印系统开发(15)——WinForm开发(43)——winform 使用打印机

winform 使用打印机 工具箱里的pageSetupDialog ,printDialog,printDocument,printPreviewDialog 拖到屏幕上 用printDocument 调用print()方法: this.printDocument1.Print(); 实现printDocument 的 PrintPage方法: private void prin...

qq_34573534的博客 620

C# 编程:在 WinForm 中实现打印控制

通过上述步骤,我们展示了如何在WinForms应用程序中使用类及其相关辅助类来实现选择打印机、设置纸张大小、进行打印预览等功能。创建实例并订阅PrintPage事件。结合, 和来增强打印功能。定义PrintPage事件处理程序来绘制页面内容。处理多页打印和自定义页面设置。希望这个教程能帮助你在WinForms应用程序中实现高效的打印控制和输入!如果你有任何其他问题或需要进一步的帮助,请随时提问。

caifox的博客 1918
上一篇: 微信H5页面禁用复制链接
下一篇: c# CefSharp 都有什么方法
~断点~
博客等级 码龄9年 6粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值