C#条形码自定义打印样式

 private void printDoc_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            e.Graphics.DrawString(infoData.DataOne,
                           new Font(new System.Drawing.FontFamily("宋体"), 7, System.Drawing.FontStyle.Bold),
                           System.Drawing.Brushes.Black,
                           10, 10
                           );
            e.Graphics.DrawString("产地:"+infoData.DataOne,
                           new Font(new System.Drawing.FontFamily("宋体"), 7, System.Drawing.FontStyle.Bold),
                           System.Drawing.Brushes.Black,
                           260, 10
                           );
            e.Graphics.DrawString("生产商:"+infoData.DataTwo,
                          new Font(new System.Drawing.FontFamily("宋体"), 7, System.Drawing.FontStyle.Bold),
                          System.Drawing.Brushes.Black,
                          260, 25
                          );
            e.Graphics.DrawString("地址:"+infoData.DataThree,
                          new Font(new System.Drawing.FontFamily("宋体"), 7, System.Drawing.FontStyle.Bold),
                          System.Drawing.Brushes.Black,
                          260, 40
                          );
            e.Graphics.DrawString("产品名称:"+infoData.DataFour,
                          new Font(new System.Drawing.FontFamily("宋体"), 7, System.Drawing.FontStyle.Bold),
                          System.Drawing.Brushes.Black,
                          260, 55
                          );
            e.Graphics.DrawString("生产编号:" + infoData.DataFive,
                          new Font(new System.Drawing.FontFamily("宋体"), 7, System.Drawing.FontStyle.Bold),
                          System.Drawing.Brushes.Black,
                          260, 70
                          );
            e.Graphics.DrawLine(new System.Drawing.Pen(System.Drawing.Color.Black),
                new System.Drawing.Point(2, 80), new System.Drawing.Point(260, 80));
            e.Graphics.DrawLine(new System.Drawing.Pen(System.Drawing.Color.Black),
                new System.Drawing.Point(260, 10), new System.Drawing.Point(260, 231));
            //设置尺寸
            options = new EncodingOptions
            {
                Width = 180,
                Height = 40,
                Margin = 0
            };
            writer = new BarcodeWriter();
            //设置条形码格式
            writer.Format = BarcodeFormat.CODE_128;
            writer.Options = options;
            options.NoPadding = true;
            //options.PureBarcode = true;
            Bitmap bitmap = writer.Write(infoData.CodeOne);
            //System.Windows.MessageBox.Show(bitmap.Width.ToString());
            //将生成的条形码图片保存
            image = bitmap;
            e.Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
            e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            e.Graphics.PixelOffsetMode = PixelOffsetMode.Half;
            e.Graphics.DrawImage(image, new System.Drawing.Point(5, 180));

            //设置尺寸二维码
            optionsQR = new EncodingOptions
            {
                Width = 60,
                Height = 60
            };
            optionsQR.NoPadding = true;
            optionsQR.PureBarcode = true;
            writerQR = new BarcodeWriter();
            //设置条形码格式
            writerQR.Format = BarcodeFormat.QR_CODE;
            writerQR.Options = optionsQR;
            Bitmap bitmapQR = writerQR.Write(infoData.CodeTwo);
            //将生成的条形码图片保存
            imageQR = bitmapQR;
            e.Graphics.DrawImage(imageQR, new System.Drawing.Point(205, 130));

}

由于使用zxing,code128总是有最小width,不能修改到满意的width   标签纸是10*6的

e.Graphics.ScaleTransform(0.6f, 1F);改变大小

这个会改变其后 使用e.graphics的元素,是变形式变窄和宽,所以单独给条形码使用需要

使用Graphics定义名字,如上 我在条形码那部分加上这个 会导致二维码也跟着改变

这三行是设置条形码变得清晰,不虚

e.Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
            e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            e.Graphics.PixelOffsetMode = PixelOffsetMode.Half;

但是会有墨迹深重影响这个一般会出现在条形码中字符有非数字或者很长

这也是我在代码中试了各种方法不能解决,突然间百度搜到了修改这个深度值  能使每个条条都是均匀黑色

再有就是点击事件中调用了  

PrintDocument print = new PrintDocument();
                print.DefaultPageSettings.PaperSize = new PaperSize("", 396, 236);
               // print.DefaultPageSettings.PaperSize = new PaperSize("", 792, 472);
               // System.Windows.Forms.PrintPreviewDialog ppd = new System.Windows.Forms.PrintPreviewDialog();
                print.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(this.printDoc_PrintPage);
                //打印预览的打印文档设置为被打印文档
               // ppd.Document = print;
                ///ppd.ShowDialog();
                print.Print();

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值