zl程序教程

您现在的位置是:首页 >  后端

当前栏目

asp.net(C#)生成Code39条形码实例条码枪可以扫描出

c#Net实例ASP 生成 可以 扫描 条形码
2023-06-13 09:15:17 时间

复制代码代码如下:


usingSystem;
usingSystem.Collections;
usingSystem.ComponentModel;
usingSystem.Drawing;
usingSystem.Data;

namespaceMSCL
{
   ///<summary>
   ///生成条码Code39
   ///</summary>
   publicclassCode39
   {
     privateHashtablem_Code39=newHashtable();

       privatebytem_Magnify=0;
       ///<summary>
       ///放大倍数
       ///</summary>
       publicbyteMagnify{get{returnm_Magnify;}set{m_Magnify=value;}}

       privateintm_Height=40;
       ///<summary>
       ///图形高
       ///</summary>
       publicintHeight{get{returnm_Height;}set{m_Height=value;}}

       privateFontm_ViewFont=null;
       ///<summary>
       ///字体大小
       ///</summary>
       publicFontViewFont{get{returnm_ViewFont;}set{m_ViewFont=value;}}

 

       publicCode39()
       {

           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");

       }

       publicenumCode39Model
       {
           ///<summary>
           ///基本类别1234567890ABC
           ///</summary>
           Code39Normal,
           ///<summary>
           ///全ASCII方式+A+B来表示小写
           ///</summary>
           Code39FullAscII
       }
       ///<summary>
       ///获得条码图形
       ///</summary>
       ///<paramname="p_Text">文字信息</param>
       ///<paramname="p_Model">类别</param>
       ///<paramname="p_StarChar">是否增加前后*号</param>
       ///<returns>图形</returns>
       publicBitmapGetCodeImage(stringp_Text,Code39Modelp_Model,boolp_StarChar)
       {
           string_ValueText="";
           string_CodeText="";
           char[]_ValueChar=null;
           switch(p_Model)
           {
               caseCode39Model.Code39Normal:
                   _ValueText=p_Text.ToUpper();
                   break;
               default:
                   _ValueChar=p_Text.ToCharArray();
                   for(inti=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(inti=0;i!=_ValueChar.Length;i++)
           {
               if(p_StarChar==true&&_ValueChar[i]=="*")thrownewException("带有起始符号不能出现*");

               object_CharCode=m_Code39[_ValueChar[i].ToString()];
               if(_CharCode==null)thrownewException("不可用的字符"+_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>
       ///<paramname="p_Text">编码</param>
       ///<returns>图形</returns>
       privateBitmapGetImage(stringp_Text)
       {
           char[]_Value=p_Text.ToCharArray();

           //宽==需要绘制的数量*放大倍数+两个字的宽  
           Bitmap_CodeImage=newBitmap(_Value.Length*((int)m_Magnify+1),(int)m_Height);
           Graphics_Garphics=Graphics.FromImage(_CodeImage);

           _Garphics.FillRectangle(Brushes.White,newRectangle(0,0,_CodeImage.Width,_CodeImage.Height));

           int_LenEx=0;
           for(inti=0;i!=_Value.Length;i++)
           {
               int_DrawWidth=m_Magnify+1;
               if(_Value[i]=="1")
               {
                   _Garphics.FillRectangle(Brushes.Black,newRectangle(_LenEx,0,_DrawWidth,m_Height));

               }
               else
               {
                   _Garphics.FillRectangle(Brushes.White,newRectangle(_LenEx,0,_DrawWidth,m_Height));
               }
               _LenEx+=_DrawWidth;
           }

 

           _Garphics.Dispose();
           return_CodeImage;
       }
       ///<summary>
       ///绘制文字
       ///</summary>
       ///<paramname="p_CodeImage">图形</param>
       ///<paramname="p_Text">文字</param>
       privatevoidGetViewImage(Bitmapp_CodeImage,stringp_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,newRectangle(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();

       }
   }

}


复制代码代码如下:

<%@WebHandlerLanguage="C#"Class="GetC39Handler"%>

usingSystem;
usingSystem.Web;
usingSystem.IO;
usingSystem.Drawing;
usingSystem.Drawing.Imaging;

publicclassGetC39Handler:IHttpHandler{
   //获取Code39处理程序
   publicvoidProcessRequest(HttpContextcontext){
       stringOrderNo=context.Request.Params["OrderNo"];
       MSCL.Code39_Code39=newMSCL.Code39();
       _Code39.Height=60;
       _Code39.Magnify=0;
       _Code39.ViewFont=newFont("Arial",12);
       System.Drawing.Image_CodeImage=_Code39.GetCodeImage(OrderNo,MSCL.Code39.Code39Model.Code39Normal,true);
       System.IO.MemoryStream_Stream=newSystem.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();
   }   
   publicboolIsReusable{
       get{
           returnfalse;
       }
   }
}


复制代码代码如下:
       //调用显示订单条码
       Image1.ImageUrl="GetC39Handler.ashx?OrderNo=32134411";