rdlc 显示条码

        /// <summary>
        /// 生成条码图片
        /// </summary>
        /// <param name="strSource"></param>
        /// <returns></returns>
        public static Bitmap GetCode39(string strSource)
        {
            int x = 5; //左邊界     
            int y = 5; //上邊界     
            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));
            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;
            }
            return objBitmap;
        }

        public static byte[] BitmapToBytes(Bitmap Bitmap)
        {
            MemoryStream ms = null;
            try
            {
                ms = new MemoryStream();
                Bitmap.Save(ms, ImageFormat.Gif);
                byte[] byteImage = new Byte[ms.Length];
                byteImage = ms.ToArray();
                return byteImage;
            }
            catch (ArgumentNullException ex)
            {
                throw ex;
            }
            finally
            {
                ms.Close();
            }
        }

 

 

 

dsDataBase.DSPrint.DTBarCodePrintDataTable dtBarCode = new DES.dsDataBase.DSPrint.DTBarCodePrintDataTable();
            if (!material.Equals(string.Empty))
            {
                byte[] imgBytes = ComClass.Com.BitmapToBytes(ComClass.Com.GetCode39(material));// BitmapToBytes(bmp);
                dsDataBase.DSPrint.DTBarCodePrintRow row = dtBarCode.NewDTBarCodePrintRow();
                row.BarCodeStr = material;
                row.PicData = Convert.ToBase64String(imgBytes);
                dtBarCode.Rows.Add(row);
            }
            dTBarCodePrintBindingSource.DataSource = dtBarCode;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值