欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

C# WinForm 用于条形码打印机生成和打印条形码

最编程 2024-04-25 15:19:43
...

C# 生成并打印条形码

由于前段时间接到一个开发小工具的任务,具体是实现输入旧条码,生成规定格式的新条码,并通过条码打印机打印出来的功能,废话不多说,直接上图。

 

功能描述选择本地打印机,填入打印数量,扫描枪扫描旧条码,工具会自动打印相应数量、规定格式的新条码出来。

主要代码:

1、生成条码

 1         /// <summary>
 2         /// 生成条码
 3         /// </summary>
 4         /// <param name="BarCode"></param>
 5         /// <returns></returns>
 6         public static Bitmap CreateCode(string BarCode)
 7         {
 8             // 1.设置条形码规格
 9             EncodingOptions options = new EncodingOptions();
10             options.Height = 80; // 必须制定高度、宽度
11             options.Width = 130;
12             options.PureBarcode = true; // 是否是纯码,如果为 false,则会在图片下方显示数字
13 
14             // 2.生成条形码图片并保存
15             BarcodeWriter writer = new BarcodeWriter();
16             writer.Options = options;
17             writer.Format = BarcodeFormat.CODE_128; //二维码编码
18 
19             return writer.Write(BarCode);  // 生成图片
20         }

2、排版,打印条码

 1         /// <summary>
 2         /// 排版,打印条码
 3         /// </summary>
 4         /// <param name="sender"></param>
 5         /// <param name="e"></param>
 6         private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
 7         {
 8             Font Fonts = new Font("Microsoft YaHei", 10, FontStyle.Regular); //标题字体  
 9             Font FontBarCode = new Font("Microsoft YaHei", 9, FontStyle.Regular); //条码字体           
10             Brush Brush = new SolidBrush(Color.Black); //画刷        
11 
12             try
13             {
14                 //获取条码上方条码信息
15                 DataRow[] dr = Dt.Select("Column2 = '" + tbJTM.Text + "'");
16                 if (dr.Length > 0)
17                 {
18                     var Width = dr[0].ItemArray[3].ToString().Length;
19 
20                     e.Graphics.DrawString(dr[0].ItemArray[3].ToString(), Fonts, Brush, new Point(155 - Width * 4, 10));
21                     e.Graphics.DrawString("                (New)", Fonts, Brush, new Point(55, 50));
22                     e.Graphics.DrawString(dr[0].ItemArray[6].ToString(), Fonts, Brush, new Point(155 - Width * 4, 70));
23 
24                     //使绘图质量最高,即消除锯齿
25                     e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
26                     e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
27                     e.Graphics.CompositingQuality = CompositingQuality.HighQuality;
28 
29                     Bitmap bitmap = CreateCode(dr[0].ItemArray[5].ToString());
30                     e.Graphics.DrawImage(bitmap, new Point(65, 90));
31 
32                     e.Graphics.DrawString(dr[0].ItemArray[5].ToString(), FontBarCode, Brush, new Point(110, 175));
33 
35                 }
36             }
37             catch (Exception ex)
38             {
39                 MessageBox.Show(ex.Message);
40             }
41         }

3、打印效果图

 具体的条码上方的信息,是通过读取txt文件获取转换的,然后新建项目的时候,我选择的是最低版本的.NetFramework 2.0,这样可以兼容绝大多数电脑的.NetFramework版本.这种方式是我测了好多遍总结出来的,算是最简单的方法,希望对大家有帮助。

死亡如风,常伴吾身~ 哈撒给~

原文地址:https://www.cnblogs.com/hurrys/p/14367598.html