zoukankan      html  css  js  c++  java
  • 生成 39 条形码

            private Bitmap GetCode39(string strSource)
            {
                int x = 5; //左邊界
                int y = 0; //上邊界
                int WidLength = 2; //粗BarCode長度
                int NarrowLength = 1; //細BarCode長度
                int BarCodeHeight = 50; //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),
                  BarCodeHeight + (y * 2)+12);

                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;

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

                Graphics g = Graphics.FromImage(objBitmap);
                String str = strSource;
                Font font = new Font("宋体", 10);
                SolidBrush sbrush = new SolidBrush(Color.Black);
                g.DrawString(str, font, sbrush, 0, y + BarCodeHeight);

                return objBitmap;
            }

  • 相关阅读:
    用动画切换按钮的状态
    用UICollectionView实现无限轮播图
    水平方向瀑布流
    UICollectionViewFlowLayout使用示例
    旋转木马效果
    Greenplum集群或者Postgresql出现死锁肿么办?
    Lucene的全文检索学习
    Jms规范学习
    Nginx的相关问题
    keepalived+Nginx实现主备保障Nginx的高可用。
  • 原文地址:https://www.cnblogs.com/xiguanjiandan/p/3155122.html
Copyright © 2011-2022 走看看