文章目录

  • 1 打印效果
  • 2 生成二维码和条形码的dll
  • 3 二维码生成类QRcodeCreator
  • 4 打印彩票方法编写
  • 5 在Winform中使用打印功能

1 打印效果

2 生成二维码和条形码的dll

条码和二维码生成的DLL

3 二维码生成类QRcodeCreator

using ThoughtWorks.QRCode.Codec;namespace LotteryPro
{public class QRcodeCreator{#region 根据链接生成二维码/// <summary>/// 根据链接获取二维码/// </summary>/// <param name="url">链接</param>/// <returns>返回二维码图片</returns>public static Image GetQRCodeBmp(string url){QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;qrCodeEncoder.QRCodeScale = 4;qrCodeEncoder.QRCodeVersion =0;qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;return qrCodeEncoder.Encode(url);}#endregion}
}

4 打印彩票方法编写

/// <summary>
/// 打印彩票
/// </summary>
public void PrintLottery(System.Drawing.Printing.PrintPageEventArgs e, string serialNum, List<string> numList)
{//生成条形码Fath.BarcodeX barCode = new Fath.BarcodeX();//创建条码生成对象barCode.Text = serialNum;//条码数据barCode.Symbology = Fath.bcType.Code128;//设置条码格式barCode.ShowText = true;//同时显示文本           e.Graphics.DrawImage(barCode.Image(240, 50), new Point(20, 5));//画条形码//生成彩票信息float left = 2; //打印区域的左边界float top = 70;//打印区域的上边界Font titlefont = new Font("仿宋", 10);//标题字体Font font = new Font("仿宋", 8);//内容字体            e.Graphics.DrawString("天津百万奖彩票中心", titlefont, Brushes.Blue, left + 20, top, new StringFormat());//打印标题//画一条分界线Pen pen = new Pen(Color.Green, 1);e.Graphics.DrawLine(pen, new Point((int)left - 2, (int)top + 20), new Point((int)left + (int)180, (int)top + 20));//循环打印选号for (int i = 0; i < numList.Count; i++){e.Graphics.DrawString(numList[i], font, Brushes.Blue, left,top + titlefont.GetHeight(e.Graphics) + font.GetHeight(e.Graphics) * i + 12, new StringFormat());}//画一条分界线           float topPoint = titlefont.GetHeight(e.Graphics) + font.GetHeight(e.Graphics) * (numList.Count) + 22;e.Graphics.DrawLine(pen, new Point((int)left - 2, (int)top + (int)topPoint),new Point((int)left + (int)180, (int)top + (int)topPoint));//打印时间string time = "购买时间:" + DateTime.Now.ToString("yyy-MM-dd  HH:mm:ss");e.Graphics.DrawString(time, font, Brushes.Blue, left, top + titlefont.GetHeight(e.Graphics)+ font.GetHeight(e.Graphics) * (numList.Count + 1) + 12, new StringFormat());//二维码图片left和top坐标int qrcodetop = (int)(top + titlefont.GetHeight(e.Graphics) + font.GetHeight(e.Graphics) * (numList.Count + 3) + 12);int qrcodeleft = (int)left + 32;//生成二维码图片// Image bmp = QRcodeCreator.GetQRCodeBmp("http://www.xiketang.com/duijiang/query?id=" + serialNum);//直接添加流水号,将来从网站直接查询Image bmp = QRcodeCreator.GetQRCodeBmp("http://www.xiketang.com");//打印e.Graphics.DrawImage(bmp, new Point(qrcodeleft, qrcodetop));//不同的URL图片大小不同,可以根据需要调整left坐标e.Graphics.DrawString("扫描二维码可直接查询兑奖结果", font, Brushes.Blue, left, qrcodetop + bmp.Height + 10, new StringFormat());
}     

5 在Winform中使用打印功能

public partial class FrmMain : Form
{private PrintDocument printDoc = new PrintDocument();//创建打印对象,可以调用方法设定选中的打印机,目前只有一台,所以不需设置#region 初始化public FrmMain(){InitializeComponent();//关联打印对象的事件this.printDoc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(this.LotteryPrintPage);}#endregion//使用小票打印机打印private void btnPrint_Click(object sender, EventArgs e){this.printDoc.Print();}//具体打印实现过程private void LotteryPrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e){string serialNum = DateTime.Now.ToString("yyyyMMddHHmmssms");//流水号(生成条码使用)this.objSelector.PrintLottery(e, serialNum, objSelector.GetPrintedNums());//调用前面编写的打印方法,为了省略代码,objSelector.GetPrintedNums()删除了,其返回类型为List<string>}
}

使用C# WinForm实现打印小票的功能相关推荐

  1. 肯德基收款打印小票功能

    题目: 同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能: 1.正常 ...

  2. Java实现安卓连接商米POS收银机打印小票功能

    在收银系统中经常使用到打印小票的功能.本文将Java如何实现商米POS收银机打印小票的功能.包括""定义管理打印相关方法的类,封装好方法供外部调用"."调用打印 ...

  3. java web 打印pos小票_JS+调用word打印功能实现在Webfrom客户端pos机打印小票(58x210mm)...

    本文主要解决在web网页上通过点击某个按钮现实打印小票的功能.修改于2015.8.15. 页面html代码: 调用Word打印机打印 function doPrint() { viewToWord(& ...

  4. vue热敏打印机_electron + vue项目实现打印小票功能及实现代码

    一 需求: 公司项目需要通过electron调用系统打印机,实现打印小票的功能. 二.分析: electron打印大概有两种: 第一种:通过window的webcontent对象,使用此种方式需要单独 ...

  5. vue热敏打印机_electron + vue项目实现打印小票功能

    前言:该文章需要一定的electron基础同学.如需了解更多相关信息,请移步electron官方文档. 一.需求: 公司项目需要通过electron调用系统打印机,实现打印小票的功能. 二.分析: e ...

  6. NWJS(NodeJS)调用打印机 - 打印小票

    1 背景 架构设计:VueJS + Spring Cloud微服务架构 功能要求: 调用小票打印机打印小票,功能和超市收银结算功能相同 使用NWJS包装VueJS前端代码实现exe安装包和可执行文件 ...

  7. 基于 Java 的外卖自动接单系统(含自动打印小票)实现原理分享

    无论脑力工作者,还是体力工作者,又或是其他工作者,开心或不开心时都免不了叫个外卖.或者在某些快餐店吃饭时经常听到"您有新的订单,请及时处理"然后就听见打印机吱吱吱的将订单自动打印出 ...

  8. iOS Bluetooth 打印小票

    效果图如下 非常感谢 Haley_Wong 的帮助 文章 http://www.jianshu.com/p/90cc08d11b5a github 地址 https://github.com/Hale ...

  9. Qt在window系统下打印小票——————附带完整代码

    文章目录 0 背景 1 打印方法 1.1 直接调用打印设置界面进行打印 1.2 直接打印,不出现打印设置界面 2 打印类 3 打印类的一些测试 3.1 测试字体和上下间隙 3.2 测试容纳字体的最大宽 ...

  10. vue项目使用LODOP打印小票功能

    毕业后第一份工作是做后台管理系统的,项目中要求有打印小票功能,然而我并不知道,该怎么写,百度了很多.一开始在网上查到很多都在用electron+vue我以为我可以用这个呢,搞了两天,才发现这是做桌面软 ...

最新文章

  1. 使用MyEclipse2017进行web开发
  2. mysql 表名和和数据库函数名称冲突的解决方法
  3. android 随意漂浮动画,Android实现气泡漂浮动画,类似IOS Game Center中气泡动画
  4. Spark SQL:SQLContext
  5. jQuery、jQury UI、jQuery Mobile----读书笔记
  6. oracle 11g r2版本号,Oracle 11g r2新增版本功能(二)
  7. android启动其他app的服务器,Android中通过外部程序启动App的三种方法
  8. 系统查找存储过程和触发器
  9. Python3 捕捉异常
  10. 奇怪的问题:为什么手机过一年就变得很慢?
  11. L3HCTF bypass出题人视角
  12. oracle sql调优面试,数据库优化常见的面试题
  13. Hi,大家好,这里是iOS用的 Flash 播放器 FlashViewer
  14. PDF太大如何压缩变小?
  15. 分布式系列_MQ_01_MQ简介
  16. android Codec-specific data
  17. 关于diskgenius删除所有分区后,电脑不能识别U盘的问题。
  18. 【转帖】lmbench的简单使用
  19. 大学计算机word图文混排,WORD图文混排教学设计
  20. Unity-ShaderGraph学习笔记第一步: 如何打开ShaderGraph 制作全息效果Shader

热门文章

  1. uCGUI 按键窗口切换机制(更新篇)
  2. [复变函数]第16堂课 4.4 解析函数零点的孤立性及惟一性定理
  3. JavaScript 调用 Web Service 的多种方法
  4. Delphi 7序列号过期的解决方法
  5. 高程3总结#第20章JSON
  6. 随时发生的网络攻击怎么防?这是一场网络安全的全民保卫战!
  7. Selenium私房菜系列6 -- 深入了解Selenium RC工作原理(1)
  8. rtabmap_ros安装---43
  9. Scala 深入浅出实战经典 第91讲:Akka第一个案例动手实战架构设计
  10. UML 2中结构图的介绍