C# 写条形码

  private void Form1_Load(object sender, EventArgs e)

        {

          p1.Image  = GetCode39("20121314-0212");

        

        }

 

 

        private Bitmap GetCode39(string strSource)

        {

            int x = 5; //左邊界

            int y = 0; //上邊界

            int WidLength = 3; //BarCode長度

            int NarrowLength = 1; //BarCode長度

            int BarCodeHeight = 80; //BarCode高度

            int intSourceLength = strSource.Length;

            string strEncode = "010010100"//編碼字串 初值為 起始符號 *

 

            string AlphaBet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%*"//Code39的字母

 

            string[] Code39 = //Code39的各字母對應碼

            {

                   /**//* 0 */ "000110100",

                   /**//* 1 */ "100100001",

                   /**//* 2 */ "001100001",

                   /**//* 3 */ "101100000",

                   /**//* 4 */ "000110001",

                   /**//* 5 */ "100110000",

                   /**//* 6 */ "001110000",

                   /**//* 7 */ "000100101",

                   /**//* 8 */ "100100100",

                   /**//* 9 */ "001100100",

                   /**//* A */ "100001001",

                   /**//* B */ "001001001",

                   /**//* C */ "101001000",

                   /**//* D */ "000011001",

                   /**//* E */ "100011000",

                   /**//* F */ "001011000",

                   /**//* G */ "000001101",

                   /**//* H */ "100001100",

                   /**//* I */ "001001100",

                   /**//* J */ "000011100",

                   /**//* K */ "100000011",

                   /**//* L */ "001000011",

                   /**//* M */ "101000010",

                   /**//* N */ "000010011",

                   /**//* O */ "100010010",

                   /**//* P */ "001010010",

                   /**//* Q */ "000000111",

                   /**//* R */ "100000110",

                   /**//* S */ "001000110",

                   /**//* T */ "000010110",

                   /**//* U */ "110000001",

                   /**//* V */ "011000001",

                   /**//* W */ "111000000",

                   /**//* X */ "010010001",

                   /**//* Y */ "110010000",

                   /**//* Z */ "011010000",

                   /**//* - */ "010000101",

                   /**//* . */ "110000100",

                   /**//*' '*/ "011000100",

                   /**//* $ */ "010101000",

                   /**//* / */ "010100010",

                   /**//* + */ "010001010",

                   /**//* % */ "000101010",

                   /**//* * */ "010010100"

            };

            strSource = strSource.ToUpper();

 

            //實作圖片

            Bitmap objBitmap = new Bitmap(

              ((WidLength * 3 + NarrowLength * 7) * (intSourceLength + 2)) + (x * 2)+60,

              BarCodeHeight + (y * 2)+60);

 

            Graphics objGraphics = Graphics.FromImage(objBitmap); //宣告GDI+繪圖介面

 

            //填上底色

            objGraphics.FillRectangle(Brushes.White, 0, 0, objBitmap.Width, objBitmap.Height);

 

            for (int i = 0; i < intSourceLength; i++)

            {

                //檢查是否有非法字元

                if (AlphaBet.IndexOf(strSource[i]) == -1 || strSource[i] == '*')

                {

                    objGraphics.DrawString("含有非法字元",

                     SystemFonts.DefaultFont, Brushes.Red, x, y);

                    return objBitmap;

                }

                //查表編碼

                strEncode = string.Format("{0}0{1}", strEncode,

                 Code39[AlphaBet.IndexOf(strSource[i])]);

            }

 

            strEncode = string.Format("{0}0010010100", strEncode); //補上結束符號 *

 

            int intEncodeLength = strEncode.Length; //編碼後長度

            int intBarWidth;

            int j = 0;

            for (int i = 0; i < intEncodeLength; i++) //依碼畫出Code39 BarCode

            {

                intBarWidth = strEncode[i] == '1' ? WidLength : NarrowLength;

                objGraphics.FillRectangle(i % 2 == 0 ? Brushes.Black : Brushes.White,

                  x, y, intBarWidth, BarCodeHeight);

 

 

 

                x += intBarWidth;

 

                if (i % 10 == 0 && i < intEncodeLength-20)

                {

                    j = i / 10;

                    objGraphics.DrawString(strSource.Substring(j,1), new Font("微软雅黑", 15), Brushes.Red, x, y + 80);

                }

            }

           

            return objBitmap;

           

        }

 

        private void button1_Click(object sender, EventArgs e)

        {

           

        }

    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值