做一个项目需要用到条形码,在网上搜索一下,基本上都是winform版本。于是我就找了一个老外的代码修改了一下,版权属于原作者。
写一个条形码的类,名称为EAN13BarCode.cs,代码如下:
using
System;
using
System.Text;
using
System.Drawing;
using
System.Web;

namespace
Utility

...
{

/**//// <summary>
/// EAN13BarCode 的摘要说明。
/// </summary>
public class EAN13BarCode

...{
private string _sName = "EAN13";

private float _fMinimumAllowableScale = .8f;
private float _fMaximumAllowableScale = 2.0f;

// This is the nomimal size recommended by the EAN.
private float _fWidth = 37.29f;
private float _fHeight = 25.93f;
private float _fFontSize = 8.0f;
private float _fScale = 1.0f;

// Left Hand Digits.

private string [] _aOddLeft = ...{ "0001101", "0011001", "0010011", "0111101",
"0100011", "0110001", "0101111", "0111011",
"0110111", "0001011" };


private string [] _aEvenLeft = ...{ "0100111", "0110011", "0011011", "0100001",
"0011101", "0111001", "0000101", "0010001",
"0001001", "0010111" };

// Right Hand Digits.

private string [] _aRight = ...{ "1110010", "1100110", "1101100", "1000010",
"1011100", "1001110", "1010000", "1000100",
"1001000", "1110100" };

private string _sQuiteZone = "000000000";

private string _sLeadTail = "101";

private string _sSeparator = "01010";

private string _sCountryCode = "00";
private string _sManufacturerCode;
private string _sProductCode;
private string _sChecksumDigit;

public EAN13BarCode( )

...{

}

public EAN13BarCode( string mfgNumber, string productId )

...{
this.CountryCode = "00";
this.ManufacturerCode = mfgNumber;
this.ProductCode = productId;
this.CalculateChecksumDigit( );
}

public EAN13BarCode( string countryCode, string mfgNumber, string productId )

...{
this.CountryCode = countryCode;
this.ManufacturerCode = mfgNumber;
this.ProductCode = productId;
this.CalculateChecksumDigit( );
}

public EAN13BarCode( string countryCode, string mfgNumber, string productId, string checkDigit )

...{
this.CountryCode = countryCode;
this.ManufacturerCode = mfgNumber;
this.ProductCode = productId;
this.ChecksumDigit = checkDigit;
}

public static string getENA13Code(string Numbers12bit)

...{
int c1 = 0;
int c2 = 0;

for (int i=0; i<11; i= i+2)

...{
c1 += int.Parse(Numbers12bit[i].ToString());
c2 += int.Parse(Numbers12bit[i+1].ToString());
}

int c3 = c1 + c2 *3;

c3 = c3 - c3/10 *10;

if (c3 == 0)

...{
return Numbers12bit + 0;
}
else

...{
int N = 10 - c3;

return Numbers12bit + N.ToString();
}
}
public void DrawEan13Barcode(System.Drawing.Graphics g, System.Drawing.Point pt)

...{
float width = this.Width * this.Scale;
float height = this.Height * this.Scale;

// EAN13 Barcode should be a total of 113 modules wide.
float lineWidth = width / 113f;

g.Clear(Color.White);
// Save the GraphicsState.
System.Drawing.Drawing2D.GraphicsState gs = g.Save( );

// Set the PageUnit to Inch because all of our measurements are in inches.
g.PageUnit = System.Drawing.GraphicsUnit.Millimeter;

// Set the PageScale to 1, so a millimeter will represent a true millimeter.
g.PageScale = 1;

System.Drawing.SolidBrush brush = new System.Drawing.SolidBrush( System.Drawing.Color.Black );

float xPosition = 0;

System.Text.StringBuilder strbEAN13 = new System.Text.StringBuilder( );
System.Text.StringBuilder sbTemp = new System.Text.StringBuilder( );

float xStart = pt.X;
float yStart = pt.Y;
float xEnd = 0;

System.Drawing.Font font = new System.Drawing.Font( "Arial", this._fFontSize * this.Scale );

// Calculate the Check Digit.
this.CalculateChecksumDigit( );

sbTemp.AppendFormat( "{0}{1}{2}{3}",
this.CountryCode,
this.ManufacturerCode,
this.ProductCode,
this.ChecksumDigit );


string sTemp = sbTemp.ToString( );

string sLeftPattern = "";
写一个条形码的类,名称为EAN13BarCode.cs,代码如下:
using
System;
using
System.Text;
using
System.Drawing;
using
System.Web;
namespace
Utility
...
{

/**//// <summary>
/// EAN13BarCode 的摘要说明。
/// </summary>
public class EAN13BarCode
...{
private string _sName = "EAN13";
private float _fMinimumAllowableScale = .8f;
private float _fMaximumAllowableScale = 2.0f;
// This is the nomimal size recommended by the EAN.
private float _fWidth = 37.29f;
private float _fHeight = 25.93f;
private float _fFontSize = 8.0f;
private float _fScale = 1.0f;
// Left Hand Digits.
private string [] _aOddLeft = ...{ "0001101", "0011001", "0010011", "0111101",
"0100011", "0110001", "0101111", "0111011",
"0110111", "0001011" };

private string [] _aEvenLeft = ...{ "0100111", "0110011", "0011011", "0100001",
"0011101", "0111001", "0000101", "0010001",
"0001001", "0010111" };
// Right Hand Digits.
private string [] _aRight = ...{ "1110010", "1100110", "1101100", "1000010",
"1011100", "1001110", "1010000", "1000100",
"1001000", "1110100" };
private string _sQuiteZone = "000000000";
private string _sLeadTail = "101";
private string _sSeparator = "01010";
private string _sCountryCode = "00";
private string _sManufacturerCode;
private string _sProductCode;
private string _sChecksumDigit;
public EAN13BarCode( )
...{

}
public EAN13BarCode( string mfgNumber, string productId )
...{
this.CountryCode = "00";
this.ManufacturerCode = mfgNumber;
this.ProductCode = productId;
this.CalculateChecksumDigit( );
}
public EAN13BarCode( string countryCode, string mfgNumber, string productId )
...{
this.CountryCode = countryCode;
this.ManufacturerCode = mfgNumber;
this.ProductCode = productId;
this.CalculateChecksumDigit( );
}
public EAN13BarCode( string countryCode, string mfgNumber, string productId, string checkDigit )
...{
this.CountryCode = countryCode;
this.ManufacturerCode = mfgNumber;
this.ProductCode = productId;
this.ChecksumDigit = checkDigit;
}
public static string getENA13Code(string Numbers12bit)
...{
int c1 = 0;
int c2 = 0;
for (int i=0; i<11; i= i+2)
...{
c1 += int.Parse(Numbers12bit[i].ToString());
c2 += int.Parse(Numbers12bit[i+1].ToString());
}
int c3 = c1 + c2 *3;
c3 = c3 - c3/10 *10;
if (c3 == 0)
...{
return Numbers12bit + 0;
}
else
...{
int N = 10 - c3;
return Numbers12bit + N.ToString();
}
}
public void DrawEan13Barcode(System.Drawing.Graphics g, System.Drawing.Point pt)
...{
float width = this.Width * this.Scale;
float height = this.Height * this.Scale;
// EAN13 Barcode should be a total of 113 modules wide.
float lineWidth = width / 113f;
g.Clear(Color.White);
// Save the GraphicsState.
System.Drawing.Drawing2D.GraphicsState gs = g.Save( );
// Set the PageUnit to Inch because all of our measurements are in inches.
g.PageUnit = System.Drawing.GraphicsUnit.Millimeter;
// Set the PageScale to 1, so a millimeter will represent a true millimeter.
g.PageScale = 1;
System.Drawing.SolidBrush brush = new System.Drawing.SolidBrush( System.Drawing.Color.Black );
float xPosition = 0;
System.Text.StringBuilder strbEAN13 = new System.Text.StringBuilder( );
System.Text.StringBuilder sbTemp = new System.Text.StringBuilder( );
float xStart = pt.X;
float yStart = pt.Y;
float xEnd = 0;
System.Drawing.Font font = new System.Drawing.Font( "Arial", this._fFontSize * this.Scale );
// Calculate the Check Digit.
this.CalculateChecksumDigit( );
sbTemp.AppendFormat( "{0}{1}{2}{3}",
this.CountryCode,
this.ManufacturerCode,
this.ProductCode,
this.ChecksumDigit );

string sTemp = sbTemp.ToString( );
string sLeftPattern = "";
本文档介绍如何在ASP.NET WebForm中实现EAN13条形码的生成。通过创建一个名为EAN13BarCode的类,利用C#代码处理条形码的各个部分,包括国家代码、制造商代码、产品代码和校验位。类提供了绘制条形码的方法,可以在网页上显示条形码图像。
最低0.47元/天 解锁文章
562

被折叠的 条评论
为什么被折叠?



