C#中打印其实就是自己绘图+调用系统打印函数,于是便有了以下操作

1.调用打印机设置

如果你想在打印前设置打印机属性(或者切换打印机),请务必添加这段代码,否则电脑会直接按照预设的设置进行打印(打印机都没法选)

//打印机设置
PrintDialog printDialog = new PrintDialog();
printDialog.Document = ptDoc;
printDialog.ShowDialog();

ptDoc就是打印的文件内容,会在后面解释

2.关联文档

等于我们需要新建一个空白的画布,然后把我们需要的文字,图片,线条依次摆上去

PrintDocument ptDoc = new PrintDocument();
ptDoc.DocumentName = "测试文件";//在队列中显示的名字
ptDoc.PrintPage += PtDoc_PrintPage;//关联内容生成方法

3.绘制内容

本次测试的内容分为:横排文字,竖排文字,图片,具体内容和位置可以通过修改参数进行调整

        private void PtDoc_PrintPage(object sender, PrintPageEventArgs e){e.Graphics.Clear(Color.White);// 开始绘制文档// 默认为横排文字e.Graphics.DrawString("标题:打印测试",new Font(new FontFamily("宋体"), 40, FontStyle.Bold),System.Drawing.Brushes.Red,170, 10);// 横线e.Graphics.DrawLine(Pens.Black, 20, 110, 800, 110);// 竖排文字e.Graphics.DrawString("内容",new Font(new FontFamily("宋体"), 14, FontStyle.Bold),System.Drawing.Brushes.Black,20, 120,new StringFormat(StringFormatFlags.DirectionVertical));e.Graphics.DrawString( this.txtName.Text,new Font(new FontFamily("宋体"), 14, FontStyle.Bold),System.Drawing.Brushes.Black,20, 200);//e.Graphics.DrawImage(Image.FromFile(Path), 20, 250, 800, 100);    //会造成失真Image imgsample = Image.FromFile(Path);Point pt = Zoom(imgsample.Width, imgsample.Height, 200);e.Graphics.DrawImage(imgsample, 20, 250, pt.X, pt.Y);//直接打印可能出现太大打印不下}

同时直接打印图片的话可能造成图片太大,可以写一个缩放方法来限制图片的最大尺寸

        private Point Zoom(int x, int y,int maxWidth){Point pt = new Point(x, y);while (pt.X > maxWidth){pt.X /= 2;pt.Y /= 2;}return pt;}

最后结果如下

C#实现自定义打印文字和图片相关推荐

  1. C#调用系统默认打印机打印文字和图片

    本方法适用于有打印驱动的打印机打印.直接用电脑默认打印机进行打印文字和图片. 首先安装打印机驱动,然后在设备和打印机中将要用的打印机设为默认打印机,然后调用该方法即可 Pulic Void Print ...

  2. uniapp微信小程序连接蓝牙打印机 打印文字、图片

    首先感谢几位的文章分享 https://blog.csdn.net/guairena/article/details/127941515 https://blog.csdn.net/qq_379700 ...

  3. 【Android】Android实现自定义带文字和图片的Button

    在Android开发中经常会需要用到带文字和图片的button,下面来讲解一下常用的实现办法. 一.用系统自带的Button实现 最简单的一种办法就是利用系统自带的Button来实现,这种方式代码量最 ...

  4. php打印文字到图片,【PHP】打开一个图片然后加上水印(图片上生成文字)

    1.自动生成图片,在图片上生成文字 Header("Content-type: image/gif"); //设置Header,如果输出图片不成功,请先暂时去掉这代码查看错误 $i ...

  5. Android实现自定义带文字和图片的Button

    项目中的需求往往十分怪异,例如在按钮文字的左边加一个图标,这样按钮内部既有文字又有图片,乍看之下Button和ImageView都没法直接使用,若用LinearLayout对ImageView和But ...

  6. PHP---微信JS-SDK获取access_token/jsapi_ticket/signature权限签名算法,php/thinkphp实现微信分享自定义文字和图片...

    PHP---微信JS-SDK获取access_token/jsapi_ticket/signature权限签名算法, php/thinkphp实现微信分享自定义文字和图片. 一.先看微信JS-SDK文 ...

  7. 图像处理---《在图片上打印文字 FreeType库》

    图像处理---<在图片上打印文字 FreeType库> 目的:想在处理之后的图像上打印输出结果. 方法: (1)只在图像上打印 数字.字母的话:                 1.Mat ...

  8. C++ 在图片上打印文字并保存图片

    int score_record(IplImage* image, string scoreNum, float score ) {CvFont font; //传值给cvPutText()的CvFo ...

  9. Android绘图机制(二)——自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片的坐标讲解

    Android绘图机制(二)--自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片的坐标讲解 我们要想画好一些炫酷的View,首先我们得知道怎么去画一些基础的图案,比如矩形,圆 ...

最新文章

  1. 2021-2028年中国阻燃装饰行业市场需求与投资规划分析报告
  2. 调整代码生成工具Database2Sharp的Winform界面生成,使其易于列表工具栏的使用。...
  3. springboot控制接口返回的字段_SpringBoot实战:SpringBoot之Rest Full接口自定义返回数据类型(ResponseBodyAdvice)...
  4. php 获取图片字节,php内置函数获取图片类型-exif_imagetype
  5. 用android ndk编译ffmpeg,AndroidNDK交叉编译FFMPEG
  6. java applet socket_Java swing applet中使用的套接字
  7. python中dtype什么意思_浅谈python 中的 type(), dtype(), astype()的区别
  8. 当ListView有Header时,onItemClick里的position不正确
  9. apache httpd配置后启动失败或域名绑定无效等问题解决方法
  10. 源码解读Linux的limits.conf文件
  11. Android Studio报错:Plugin Kotlin was not installed: Cannot download
  12. dnf全部使用_dnf命令 (常用总结)
  13. 获取CPU、硬盘、主板序列号及MAC地址工具类
  14. 使用csc命令手动编译cs文件
  15. 简洁实用jQuery进度条插件
  16. JAVA实现List集合去重
  17. 员工人事档案包括哪些内容?
  18. jpg格式如何转eps路径_jpg/png格式图片转eps格式的方法总结
  19. python火车抢票_春运火车票太难抢?不如试试这个python开源工具吧
  20. 52. 文件上传篇——Apache漏洞原理

热门文章

  1. Linux系统下运行QT视频播放器示例程序(Media Player Example )
  2. logcat 命令行用法
  3. JUC基础(一): 什么是JUC(JUC概述)
  4. XSL的一些基础知识!
  5. 浅谈react hook ( ref)
  6. python中,ttk.Combobox的background、foreground和font属性的设置问题
  7. 探究C++:虚函数表究竟怎么回事?
  8. 行人重识别数据集汇总
  9. 事件冒泡、捕获?如何阻止
  10. 现货黄金赚吗:黄金实战技巧