asp.net(C#)產生Code39條碼執行個體

來源:互聯網
上載者:User

 這篇文章主要介紹了asp.net(C#)產生Code39條碼執行個體 條碼槍可以掃描出。需要的朋友可以過來參考下,希望對大家有所協助

 代碼如下:using System;using System.Collections;using System.ComponentModel;using System.Drawing;using System.Data; namespace MSCL{    /// <summary>    /// 產生條碼Code39    /// </summary>    public class Code39    {      private Hashtable m_Code39 = new Hashtable();         private byte m_Magnify = 0;        /// <summary>        /// 放大倍數        /// </summary>        public byte Magnify { get { return m_Magnify; } set { m_Magnify = value; } }         private int m_Height = 40;        /// <summary>        /// 圖形高        /// </summary>        public int Height { get { return m_Height; } set { m_Height = value; } }         private Font m_ViewFont = null;        /// <summary>        /// 字型大小        /// </summary>        public Font ViewFont { get { return m_ViewFont; } set { m_ViewFont = value; } }           public Code39()        {             m_Code39.Add("A", "1101010010110");            m_Code39.Add("B", "1011010010110");            m_Code39.Add("C", "1101101001010");            m_Code39.Add("D", "1010110010110");            m_Code39.Add("E", "1101011001010");            m_Code39.Add("F", "1011011001010");            m_Code39.Add("G", "1010100110110");            m_Code39.Add("H", "1101010011010");            m_Code39.Add("I", "1011010011010");            m_Code39.Add("J", "1010110011010");            m_Code39.Add("K", "1101010100110");            m_Code39.Add("L", "1011010100110");            m_Code39.Add("M", "1101101010010");            m_Code39.Add("N", "1010110100110");            m_Code39.Add("O", "1101011010010");            m_Code39.Add("P", "1011011010010");            m_Code39.Add("Q", "1010101100110");            m_Code39.Add("R", "1101010110010");            m_Code39.Add("S", "1011010110010");            m_Code39.Add("T", "1010110110010");            m_Code39.Add("U", "1100101010110");            m_Code39.Add("V", "1001101010110");            m_Code39.Add("W", "1100110101010");            m_Code39.Add("X", "1001011010110");            m_Code39.Add("Y", "1100101101010");            m_Code39.Add("Z", "1001101101010");            m_Code39.Add("0", "1010011011010");            m_Code39.Add("1", "1101001010110");            m_Code39.Add("2", "1011001010110");            m_Code39.Add("3", "1101100101010");            m_Code39.Add("4", "1010011010110");            m_Code39.Add("5", "1101001101010");            m_Code39.Add("6", "1011001101010");            m_Code39.Add("7", "1010010110110");            m_Code39.Add("8", "1101001011010");            m_Code39.Add("9", "1011001011010");            m_Code39.Add("+", "1001010010010");            m_Code39.Add("-", "1001010110110");            m_Code39.Add("*", "1001011011010");            m_Code39.Add("/", "1001001010010");            m_Code39.Add("%", "1010010010010");            //m_Code39.Add("contentquot;, "1001001001010");            m_Code39.Add(".", "1100101011010");            m_Code39.Add(" ", "1001101011010");         }         public enum Code39Model        {            /// <summary>            /// 基本類別 1234567890ABC            /// </summary>            Code39Normal,            /// <summary>            /// 全ASCII方式 +A+B 來表示小寫            /// </summary>            Code39FullAscII        }        /// <summary>        /// 獲得條碼圖形        /// </summary>        /// <param name="p_Text">文字資訊</param>        /// <param name="p_Model">類別</param>        /// <param name="p_StarChar">是否增加前後*號</param>        /// <returns>圖形</returns>        public Bitmap GetCodeImage(string p_Text, Code39Model p_Model, bool p_StarChar)        {            string _ValueText = "";            string _CodeText = "";            char[] _ValueChar = null;            switch (p_Model)            {                case Code39Model.Code39Normal:                    _ValueText = p_Text.ToUpper();                    break;                default:                    _ValueChar = p_Text.ToCharArray();                    for (int i = 0; i != _ValueChar.Length; i++)                    {                        if ((int)_ValueChar[i] >= 97 && (int)_ValueChar[i] <= 122)                        {                            _ValueText += "+" + _ValueChar[i].ToString().ToUpper();                         }                        else                        {                            _ValueText += _ValueChar[i].ToString();                        }                    }                    break;            }             _ValueChar = _ValueText.ToCharArray();             if (p_StarChar == true) _CodeText += m_Code39["*"];             for (int i = 0; i != _ValueChar.Length; i++)            {                if (p_StarChar == true && _ValueChar[i] == '*') throw new Exception("帶有起始符號不能出現*");                 object _CharCode = m_Code39[_ValueChar[i].ToString()];                if (_CharCode == null) throw new Exception("停用字元" + _ValueChar[i].ToString());                _CodeText += _CharCode.ToString();            }             if (p_StarChar == true) _CodeText += m_Code39["*"];             Bitmap _CodeBmp = GetImage(_CodeText);            GetViewImage(_CodeBmp, p_Text);            return _CodeBmp;        }           /// <summary>        /// 繪製編碼圖形        /// </summary>        /// <param name="p_Text">編碼</param>        /// <returns>圖形</returns>        private Bitmap GetImage(string p_Text)        {            char[] _Value = p_Text.ToCharArray();             //寬 == 需要繪製的數量*放大倍數 + 兩個字的寬               Bitmap _CodeImage = new Bitmap(_Value.Length * ((int)m_Magnify + 1), (int)m_Height);            Graphics _Garphics = Graphics.FromImage(_CodeImage);             _Garphics.FillRectangle(Brushes.White, new Rectangle(0, 0, _CodeImage.Width, _CodeImage.Height));             int _LenEx = 0;            for (int i = 0; i != _Value.Length; i++)            {                int _DrawWidth = m_Magnify + 1;                if (_Value[i] == '1')                {                    _Garphics.FillRectangle(Brushes.Black, new Rectangle(_LenEx, 0, _DrawWidth, m_Height));                 }                else                {                    _Garphics.FillRectangle(Brushes.White, new Rectangle(_LenEx, 0, _DrawWidth, m_Height));                }                _LenEx += _DrawWidth;            }               _Garphics.Dispose();            return _CodeImage;        }        /// <summary>        /// 繪製文字        /// </summary>        /// <param name="p_CodeImage">圖形</param>        /// <param name="p_Text">文字</param>        private void GetViewImage(Bitmap p_CodeImage, string p_Text)        {            if (m_ViewFont == null) return;            Graphics _Graphics = Graphics.FromImage(p_CodeImage);            SizeF _FontSize = _Graphics.MeasureString(p_Text, m_ViewFont);             if (_FontSize.Width > p_CodeImage.Width || _FontSize.Height > p_CodeImage.Height - 20)            {                _Graphics.Dispose();                return;            }            int _StarHeight = p_CodeImage.Height - (int)_FontSize.Height;             _Graphics.FillRectangle(Brushes.White, new Rectangle(0, _StarHeight, p_CodeImage.Width, (int)_FontSize.Height));             int _StarWidth = (p_CodeImage.Width - (int)_FontSize.Width) / 2;             _Graphics.DrawString(p_Text, m_ViewFont, Brushes.Black, _StarWidth, _StarHeight);             _Graphics.Dispose();         }    } }  代碼如下:<%@ WebHandler Language="C#" Class="GetC39Handler" %> using System;using System.Web;using System.IO;using System.Drawing;using System.Drawing.Imaging; public class GetC39Handler : IHttpHandler {    //擷取Code39處理常式    public void ProcessRequest (HttpContext context) {        string OrderNo = context.Request.Params["OrderNo"];        MSCL.Code39 _Code39 = new MSCL.Code39();        _Code39.Height = 60;        _Code39.Magnify = 0;        _Code39.ViewFont = new Font("Arial", 12);        System.Drawing.Image _CodeImage = _Code39.GetCodeImage(OrderNo, MSCL.Code39.Code39Model.Code39Normal, true);        System.IO.MemoryStream _Stream = new System.IO.MemoryStream();        _CodeImage.Save(_Stream, System.Drawing.Imaging.ImageFormat.Jpeg);        //_CodeImage.Save(Server.MapPath("/1.jpeg"));        //_CodeImage.Save(Server.MapPath("/1.BMP"));        //_CodeImage.Save(Server.MapPath("/1.GIF"));         context.Response.ContentType = "image/tiff";        context.Response.Clear();        context.Response.BufferOutput = true;        context.Response.BinaryWrite(_Stream.GetBuffer());        context.Response.Flush();    }        public bool IsReusable {        get {            return false;        }    }}  代碼如下:        //調用顯示訂單條碼        Image1.ImageUrl = "GetC39Handler.ashx?OrderNo=32134411"; 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.