生成条形码代码

news/2024/11/22 12:46:15/

//该段代码为 生成条形码代码

//生成效果

 

 

 

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;
        }
    }
}


http://www.ppmy.cn/news/664979.html

相关文章

识别条形码

问题描述 计算机学院2013级的院草语文难同学是软院院花牟黑黑爱慕的对象&#xff0c;因此牟黑黑经常约楠神去逛街&#xff0c;楠神不喜欢陪牟黑黑逛街&#xff0c;但是不得不从啊。所以在牟黑黑逛街的时候他就无聊的用眼睛识别条形码 。 在生活中&#xff0c;条形码经常用来标志…

根据条形码获取商品信息

根据条形码获取商品信息 function getGoodsInfoByCode(code){commonAjax.commAJAX({//根据条形码的查询url: "/goodsmanager/getGoddsListBygoodsBarcode?page1&limit10",//订单号 条形码method:get,data:{goodsBarcode:code},ajaxFunc:function(res){if(res.m…

Barcode for Mac(条形码生成器)

用户可以自定义所有的条码内容&#xff0c;无论是字体还是条码宽度都能自定义生成&#xff0c;通过可以轻松完成条形码的创建&#xff0c;并且减少错误&#xff0c;非常方便。 barcode mac教程 安装包下载完成后&#xff0c;双击安装&#xff0c;根据安装器提示进行安装即可。 …

条形码编码规则及标准

任何一种条形码&#xff0c;都是按照预先规定的编码规则和条形码有关标准&#xff0c;由条和空组合而成的。编码规则主要研究包括条形码基本术语在内的一些基本概念和条形码符号结构以及编码基本原理。编码规则既是有关条形码的入门知识&#xff0c;又是条形码技术的基本内容&a…

iOS 扫描二维码/条形码

Linux编程 点击右侧关注&#xff0c;免费入门到精通&#xff01; 作者丨QiShare https://www.jianshu.com/p/6529f5729b36 最近做IoT项目&#xff0c;在智能设备配网过程中有一个扫描设备或说明书上的二维码/条形码来读取设备信息的需求&#xff0c;要达到的效果大体如下&#…

iOS条码的生成

这个算不算什么个人分享,只是对两个库的分享. NKDBarcode, 这是一个小日本人写的生成条形码的库, 写得还不错, 各种常用码都可以生成, 而且调用起来也很方便, 唯一不足的就是这个库是MRC的, 所以使用的时候要都几十个.m文件进行"-fno-objc-arc". ps:手机客户端生成条…

【PC】CPU与GPU

文章目录 CPU与主板CPU是什么主板是什么功能 GPU与显卡GPU是什么显卡是什么功能 CPU与GPU的关系 ALU&#xff1a; 算术单元&#xff08;Arithmetic Unit&#xff09;&#xff1a;算术单元执行基本的算术运算&#xff0c;如加法、减法、乘法和除法。它能够对整数、浮点数和定点数…

【AUTOSAR】BMS开发实际项目讲解(二十九)----电池管理系统电池充放电功率控制与SOC

电池充放电功率控制 关联的系统需求 Sys_Req_3901、Sys_Req_3902、Sys_Req_3903、Sys_Req_3904; 功能实现描述 电池充放电功率控制主要包括以下内容&#xff1a; 60S可用功率 参见[CELL] 30S可用功率 参见[CELL] 10S可用功率 参见[CELL] SOP算法 ID Description ASI…