ASP.net(c#)生成条形码 code39条码生成方法
ASP.net(c#)生成条形码 code39条码生成方法
发布时间:2016-12-29 来源:查字典编辑
摘要:这几天一直在弄128条码的事情,找了相关的资料,也没找到。后来没办法只能改成code39的条码。现在把它写出来,与大家分享1.先下载一种免费...

这几天一直在弄128条码的事情,找了相关的资料,也没找到。后来没办法只能改成code39的条码。现在把它写出来,与大家分享

1.先下载一种免费的 code39条码字体

2.建个类 为 code39 并写入以下代码

复制代码 代码如下:

public sealed class Code39

{

#region private variables

/// <summary>

/// The Space Between each of Title, BarCode, BarCodeString

/// </summary>

private const int SPACE_HEIGHT = 3;

SizeF _sizeLabel = SizeF.Empty;

SizeF _sizeBarCodeValue = SizeF.Empty;

SizeF _sizeBarCodeString = SizeF.Empty;

#endregion

#region Label

private string _label = null;

private Font _labelFont = null;

/// <summary>

/// BarCode Title (条码标签)

/// </summary>

public string Label

{

set { _label = value; }

}

/// <summary>

/// BarCode Title Font (条码标签使用的字体)

/// </summary>

public Font LabelFont

{

get

{

if (_labelFont == null)

return new Font("Arial", 10);

return _labelFont;

}

set { _labelFont = value; }

}

#endregion

private string _additionalInfo = null;

private Font _addtionalInfoFont = null;

/// <summary>

/// Additional Info Font (附加信息字体)

/// </summary>

public Font AdditionalInfoFont

{

set { _addtionalInfoFont = value; }

get

{

if (_addtionalInfoFont == null) return new Font("Arial", 10);

return _addtionalInfoFont;

}

}

/// <summary>

/// Additional Info Content, if "ShowBarCodeValue" is true, the info is unvisible

/// 附加信息,如果设置ShowBarCodeValue为true,则此项不显示

/// </summary>

public string AdditionalInfo

{

set { _additionalInfo = value; }

}

#region BarCode Value and Font

private string _barCodeValue = null;

/// <summary>

/// BarCode Value (条码值)

/// </summary>

public string BarCodeValue

{

get

{

if (string.IsNullOrEmpty(_barCodeValue))

throw new NullReferenceException("The BarCodeValue has not been set yet!");

return _barCodeValue;

}

set { _barCodeValue = value.StartsWith("*") && value.EndsWith("*") ? value : "*" + value + "*"; }

}

private bool _showBarCodeValue = false;

/// <summary>

/// whether to show the original string of barcode value bellow the barcode

/// 是否在条码下方显示条码值,默认为false

/// </summary>

public bool ShowBarCodeValue

{

set { _showBarCodeValue = value; }

}

private Font _barCodeValueFont = null;

/// <summary>

/// the font of the codestring to show

/// 条码下方显示的条码值的字体

/// </summary>

public Font BarCodeValueFont

{

get

{

if (_barCodeValueFont == null)

return new Font("Arial", 10);

return _barCodeValueFont;

}

set { _barCodeValueFont = value; }

}

private int _barCodeFontSize = 50;

/// <summary>

/// the font size of the barcode value to draw

/// 条码绘制的大小,默认50

/// </summary>

public int BarCodeFontSzie

{

set { _barCodeFontSize = value; }

}

#endregion

#region generate the barcode image

private Bitmap BlankBackImage

{

get

{

int barCodeWidth = 0, barCodeHeight = 0;

using (Bitmap bmp = new Bitmap(1, 1, PixelFormat.Format32bppArgb))

{

using (Graphics g = Graphics.FromImage(bmp))

{

if (!string.IsNullOrEmpty(_label))

{

_sizeLabel = g.MeasureString(_label, LabelFont);

barCodeWidth = (int)_sizeLabel.Width;

barCodeHeight = (int)_sizeLabel.Height + SPACE_HEIGHT;

}

_sizeBarCodeValue = g.MeasureString(BarCodeValue, new Font("Free 3 of 9 Extended", _barCodeFontSize));

barCodeWidth = Math.Max(barCodeWidth, (int)_sizeBarCodeValue.Width);

barCodeHeight += (int)_sizeBarCodeValue.Height;

if (_showBarCodeValue)

{

_sizeBarCodeString = g.MeasureString(_barCodeValue, BarCodeValueFont);

barCodeWidth = Math.Max(barCodeWidth, (int)_sizeBarCodeString.Width);

barCodeHeight += (int)_sizeBarCodeString.Height + SPACE_HEIGHT;

}

//else

//{

// if (!string.IsNullOrEmpty(_additionalInfo))

// {

// _sizeAdditionalInfo = g.MeasureString(_additionalInfo, AdditionalInfoFont);

// barCodeWidth = Math.Max(barCodeWidth, (int)_sizeAdditionalInfo.Width);

// barCodeHeight += (int)_sizeAdditionalInfo.Height + SPACE_HEIGHT;

// }

//}

}

}

return new Bitmap(barCodeWidth, barCodeHeight, PixelFormat.Format32bppArgb);

}

}

/// <summary>

/// Draw the barcode value to the blank back image and output it to the browser

/// 绘制WebForm形式的条码

/// </summary>

/// <param name="ms">Recommand the "Response.OutputStream" 使用 Response.OutputStream</param>

/// <param name="imageFormat">The Image format to the Browser 输出到浏览器到图片格式,建议GIF</param>

public Bitmap CreateWebForm(Stream ms, ImageFormat imageFormat)

{

int barCodeWidth, barCodeHeight;

using (Bitmap bmp = this.BlankBackImage)

{

barCodeHeight = bmp.Height;

barCodeWidth = bmp.Width;

using (Graphics g = Graphics.FromImage(bmp))

{

g.Clear(Color.White);

g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;

g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

int vPos = 0;

////Draw Label String

if (!string.IsNullOrEmpty(_label))

{

g.DrawString(_label, LabelFont, new SolidBrush(Color.Black),

XCenter((int)_sizeLabel.Width, barCodeWidth), vPos);

vPos += (int)_sizeLabel.Height + SPACE_HEIGHT;

}

else { vPos = SPACE_HEIGHT; }

////Draw The Bar Value

g.DrawString(_barCodeValue, new Font("Free 3 of 9 Extended", _barCodeFontSize), new SolidBrush(Color.Black),

XCenter((int)_sizeBarCodeValue.Width, barCodeWidth), vPos);

////Draw the BarValue String

if (_showBarCodeValue)

{

g.DrawString(_barCodeValue, BarCodeValueFont, new SolidBrush(Color.Black),

XCenter((int)_sizeBarCodeString.Width, barCodeWidth),

vPos + (int)_sizeBarCodeValue.Height);

}

//else

//{

// if (!string.IsNullOrEmpty(_additionalInfo))

// {

// g.DrawString(_additionalInfo, AdditionalInfoFont, new SolidBrush(Color.Black),

// XCenter((int)_sizeAdditionalInfo.Width, barCodeWidth),

// vPos + (int)_sizeBarCodeValue.Height);

// }

//}

}

bmp.Save(ms, imageFormat);

return bmp;

}

}

/// <summary>

/// 生成winform格式的条码

/// </summary>

/// <param name="imageFormat">图片格式,建议GIF</param>

/// <returns>Stream类型</returns>

public Stream CreateWinForm(ImageFormat imageFormat)

{

int barCodeWidth, barCodeHeight;

using (Bitmap bmp = this.BlankBackImage)

{

barCodeHeight = bmp.Height;

barCodeWidth = bmp.Width;

using (Graphics g = Graphics.FromImage(bmp))

{

g.Clear(Color.White);

g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;

g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

int vPos = 0;

////Draw Label String

if (!string.IsNullOrEmpty(_label))

{

g.DrawString(_label, LabelFont, new SolidBrush(Color.Black),

XCenter((int)_sizeLabel.Width, barCodeWidth), vPos);

vPos += (int)_sizeLabel.Height + SPACE_HEIGHT;

}

else { vPos = SPACE_HEIGHT; }

////Draw The Bar Value

g.DrawString(_barCodeValue, new Font("Free 3 of 9 Extended", _barCodeFontSize), new SolidBrush(Color.Black),

XCenter((int)_sizeBarCodeValue.Width, barCodeWidth), vPos);

////Draw the BarValue String

if (_showBarCodeValue)

{

g.DrawString(_barCodeValue, BarCodeValueFont, new SolidBrush(Color.Black),

XCenter((int)_sizeBarCodeString.Width, barCodeWidth),

vPos + (int)_sizeBarCodeValue.Height);

}

//else

//{

// //if (!string.IsNullOrEmpty(_additionalInfo))

// //{

// // g.DrawString(_additionalInfo, AdditionalInfoFont, new SolidBrush(Color.Black),

// // //XCenter((int)_sizeAdditionalInfo.Width, barCodeWidth),

// // vPos + (int)_sizeBarCodeValue.Height);

// //}

//}

}

Stream ms = new MemoryStream();

bmp.Save(ms, imageFormat);

return ms;

}

}

#endregion

private static int XCenter(int subWidth, int globalWidth)

{

return (globalWidth - subWidth) / 2;

}

}

3.如果是web程序 请调用 CreateWebForm 如果是cs程序 则使用CreateWinForm

4.新建一aspx文件,写入以下代码

复制代码 代码如下:

protected void Page_Load(object sender, EventArgs e)

{

Code39 code39 = new Code39();

code39.BarCodeValue = "LDSO-001";

code39.BarCodeFontSzie = 60;

// code39.Label = "39码,底部显示码值";

code39.ShowBarCodeValue = true;

Response.Write(code39.CreateWebForm(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif));

code39 = null;

}

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新asp.net教程学习
热门asp.net教程学习
编程开发子分类