做一个项目需要用到条形码,在网上搜索一下,基本上都是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,
写一个条形码的类,名称为EAN13BarCode.cs,代码如下:


























































































































































