• c# 条形码(求指教)


    因公司需要完成一条形码打印问题,所以在找到一些资料做了一个Demo

    特请教!

    不知道此条形码是否正确:

    图:

    源码:

    代码
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Drawing;

    namespace Paabo.WordProcessing.Common
    {
        
    public class BarCodeProvider
        {
            
    #region 单例
            
    private static BarCodeProvider _Intance;
            
    public static BarCodeProvider Intance
            {
                
    get
                {
                    
    if (_Intance == null)
                    {
                        _Intance 
    = new BarCodeProvider();
                    }
                    
    return _Intance;
                }
            }
            
    #endregion

            
    #region Size
            
    /// <summary>
            
    /// 图片宽度
            
    /// </summary>
            private int _Width = 200;
            
    public int Width
            {
                
    get { return _Width; }
                
    set { _Width = value; }
            }


            
    /// <summary>
            
    /// 图片高度
            
    /// </summary>
            private int _Height = 80;
            
    public int Height 
            {
                
    get { return _Height; }
                
    set { _Height = value; }
            }

            
    /// <summary>
            
    /// 明文高度
            
    /// </summary>
            private int _TextHeight = 25;
            
    public int TextHeight
            {
                
    get { return _TextHeight; }
                
    set { _TextHeight = value; }
            }

            
    #endregion

            
    #region 边距
            
    private int _Margin_Top = 5;

            
    /// <summary>
            
    /// 上边距
            
    /// </summary>
            public int Margin_Top
            {
                
    get { return _Margin_Top; }
                
    set { _Margin_Top = value; }
            }

            
    private int _Margin_Left = 5;

            
    /// <summary>
            
    /// 左边距
            
    /// </summary>
            public int Margin_Left
            {
                
    get { return _Margin_Left; }
                
    set { _Margin_Left = value; }
            }


            
    private int _Margin_Right = 5;

            
    /// <summary>
            
    /// 右边距
            
    /// </summary>
            public int Margin_Right
            {
                
    get { return _Margin_Right; }
                
    set { _Margin_Right = value; }
            }

            
    private int _Margin_Bottom = 5;
            
    /// <summary>
            
    /// 下边距
            
    /// </summary>
            public int Margin_Bottom
            {
                
    get { return _Margin_Bottom; }
                
    set { _Margin_Bottom = value; }
            }
            
    #endregion

            
    private Font _TextFont = new Font("宋体"12);

            
    /// <summary>
            
    /// 明文字体
            
    /// </summary>
            public Font TextFont
            {
                
    get { return _TextFont; }
                
    set { _TextFont = value; }
            }

            
    private Pen _BlackPen = new Pen(Brushes.Black);
            
    private Pen _WhitePen = new Pen(Brushes.White);

            
    /// <summary>
            
    /// 将明文装换为编码
            
    /// </summary>
            
    /// <param name="text">明文内容</param>
            
    /// <returns>编码</returns>
            private string ConvertToBarCode(string text)
            {
                
    string code = string.Empty;
                
    foreach (char item in text)
                {
                    
    int itemValue = item;
                    code 
    += Convert.ToString(itemValue, 2+ ",";
                }
                
    return code;
            }

            
    /// <summary>
            
    /// 将字符串生成条形图片
            
    /// </summary>
            
    /// <param name="text">明文内容</param>
            
    /// <returns></returns>
            public Bitmap CreateBarCodeImage(string text)
            {
                Bitmap map 
    = new Bitmap(Width, Height);
                Graphics g 
    = Graphics.FromImage(map);
                
    try
                {
                    
    string code = ConvertToBarCode(text);
                    code 
    = string.Format("101{0}101", code);
                    
    char[] array = code.ToCharArray();
                    
    char[] textArray = text.ToCharArray();
                    
    int lineWidth = (Width - Margin_Left-Margin_Right) / (array.Length - textArray.Length);
                    
    int lineHeight = Height - TextHeight - Margin_Bottom;

                    _BlackPen.Width 
    = lineWidth;
                    _WhitePen.Width 
    = lineWidth;

                    
    int x = 5;
                    
    int topY = 5;
                    
    int bottonY = Height - Margin_Bottom - TextHeight;

                    
    int index = 0;
                    
    char pItem = ' ';
                    Pen pen 
    = null;
                    
    foreach (char item in array)
                    {

                        
    if (item == ',')
                        {
                            
    string t = textArray[index].ToString();
                            g.DrawString(t, TextFont, Brushes.Black, 
    new PointF(x - (lineWidth * 5), bottonY + 3));
                            index
    ++;
                        }
                        
    else
                        {
                            
    if (pItem == ' ')
                            {
                                pen 
    = _BlackPen;
                            }
                            
    else
                            {
                                
    if (item != pItem)
                                {
                                    pen 
    = pen == _BlackPen ? _WhitePen : _BlackPen;
                                }
                            }
                            pItem 
    = item;
                            g.DrawLine(pen, 
    new Point(x, topY), new Point(x, bottonY));
                        }
                        x 
    += lineWidth;
                    }
                }
                
    catch (Exception ex)
                {
                    g.Clear(Color.White);
                    g.DrawString(ex.Message, TextFont, Brushes.Black, 
    new PointF(00));
                }
                g.Save();
                
    return map;
            }
        }
    }
  • 相关阅读:
    (转)CMD指令大全
    [转]测试人员要像医生一样把要测试的程序当自己的病人一样看待一样检测!
    robotFramework学习笔记
    mysql数据库转换成数据字典的方法(整理)
    【转】PHP SQL防注入的一些经验
    性能测试基础知识(概念)
    iOS--MJRefresh的使用 上拉刷新和下拉加载
    IOS----UIScrollerView的使用
    iOS -- UILabel的高度自适应
    第二章 图像形成
  • 原文地址:https://www.cnblogs.com/wwwzzg168/p/3570689.html
Copyright © 2020-2023  润新知