asp.net(C#)生成Code39条形码实例条码枪可以扫描出
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";
相关文章
- c#byte数组转换成字符串_字符串数组怎么定义
- ADO数据库C#中ExecuteReader、ExecuteNonQuery、ExecuteScalar、SqlDataReader、SqlDataAdapter
- 使用C#编写一个.NET分析器(一)
- [C#.NET 拾遗补漏]10:理解 volatile 关键字(去除 Release 版本反向优化)
- 分享一款漂亮的 C# .Net 图形验证码
- 【愚公系列】2023年02月 .NET/C#知识点-.NET Core配置文件详解
- 【愚公系列】2023年03月 .NET/C#知识点-匿名类的自动映射
- 【错误记录】Visual Studio 2019 中运行 Unity C# 脚本时报错 ( 根据解决方案, 可能需要安装额外的组件才能获得 | .NET 桌面开发 | 使用 Unity 的游戏开发 )
- C#/.NET CLR:公共语言运行时
- C#方法的重载、重写和隐藏
- NET与MySQL的无限结合(.net 连接mysql)
- ASP.net(c#)打造24小时天气预报及实时天气
- asp.net(c#)两种随机数的算法,可用抽考题
- javascript与asp.net(c#)互相调用方法
- asp.net(C#)中给控件添加客户端js事件的方法
- 在asp.net(c#)下实现调用cmd的方法
- C#利用子线程刷新主线程分享教程
- c#中使用自动属性减少代码输入量
- C#中执行批处理文件(*.bat)的方法代码
- C#(int)中Convert、Parse、TryParse的区别
- c#泛型类型参数与约束的深入分析
- CheckBoxList多选样式jquery、C#获取选择项
- C#正则表达式分解和转换IP地址实例(C#正则表达式大全c#正则表达式语法)
- Asp.Net(C#)自动执行计划任务的程序实例分析分享
- C#窗体传值实例汇总
- C#DatagridView常用操作汇总
- C#使用this关键字实现串联构造函数调用方法
- C++与C#互调dll的实现步骤
- C#.NET采用HTML模板发送电子邮件完整实例