博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
开源项目barcodelib-C#条形码图像生成库
阅读量:4034 次
发布时间:2019-05-24

本文共 6531 字,大约阅读时间需要 21 分钟。

介绍

该库旨在为开发人员提供一个简单的类,以便他们在需要根据数据字符串生成条形码图像时使用。

用法

该库包含一个名为BarcodeLib的类,其中包含三个构造函数:

Barcode();Barcode(string);Barcode(string, BarcodeLib.TYPE);

如果决定使用参数创建实例,则参数如下:字符串是要编码到条形码中的数据,而BarcodeLib.TYPE是用于编码数据的符号体系。如果在创建实例时未选择指定数据和类型,则可以稍后(但在编码之前)通过适当的属性指定它们。

BarcodeLib.Barcode b = new BarcodeLib.Barcode();Image img = b.Encode(BarcodeLib.TYPE.UPCA, "038000356216", Color.Black, Color.White, 290, 120);
private void btnEncode_Click(object sender, EventArgs e)        {            errorProvider1.Clear();            int W = Convert.ToInt32(this.txtWidth.Text.Trim());            int H = Convert.ToInt32(this.txtHeight.Text.Trim());            b.Alignment = AlignmentPositions.CENTER;            //barcode alignment            switch (cbBarcodeAlign.SelectedItem.ToString().Trim().ToLower())            {                case "left": b.Alignment = AlignmentPositions.LEFT; break;                case "right": b.Alignment = AlignmentPositions.RIGHT; break;                default: b.Alignment = AlignmentPositions.CENTER; break;            }//switch            TYPE type = TYPE.UNSPECIFIED;            switch (cbEncodeType.SelectedItem.ToString().Trim())            {                case "UPC-A": type = TYPE.UPCA; break;                case "UPC-E": type = TYPE.UPCE; break;                case "UPC 2 Digit Ext.": type = TYPE.UPC_SUPPLEMENTAL_2DIGIT; break;                case "UPC 5 Digit Ext.": type = TYPE.UPC_SUPPLEMENTAL_5DIGIT; break;                case "EAN-13": type = TYPE.EAN13; break;                case "JAN-13": type = TYPE.JAN13; break;                case "EAN-8": type = TYPE.EAN8; break;                case "ITF-14": type = TYPE.ITF14; break;                case "Codabar": type = TYPE.Codabar; break;                case "PostNet": type = TYPE.PostNet; break;                case "Bookland/ISBN": type = TYPE.BOOKLAND; break;                case "Code 11": type = TYPE.CODE11; break;                case "Code 39": type = TYPE.CODE39; break;                case "Code 39 Extended": type = TYPE.CODE39Extended; break;                case "Code 39 Mod 43": type = TYPE.CODE39_Mod43; break;                case "Code 93": type = TYPE.CODE93; break;                case "LOGMARS": type = TYPE.LOGMARS; break;                case "MSI": type = TYPE.MSI_Mod10; break;                case "Interleaved 2 of 5": type = TYPE.Interleaved2of5; break;                case "Interleaved 2 of 5 Mod 10": type = TYPE.Interleaved2of5_Mod10; break;                case "Standard 2 of 5": type = TYPE.Standard2of5; break;                case "Standard 2 of 5 Mod 10": type = TYPE.Standard2of5_Mod10; break;                case "Code 128": type = TYPE.CODE128; break;                case "Code 128-A": type = TYPE.CODE128A; break;                case "Code 128-B": type = TYPE.CODE128B; break;                case "Code 128-C": type = TYPE.CODE128C; break;                case "Telepen": type = TYPE.TELEPEN; break;                case "FIM": type = TYPE.FIM; break;                case "Pharmacode": type = TYPE.PHARMACODE; break;                default: MessageBox.Show("Please specify the encoding type."); break;            }//switch            try            {                if (type != TYPE.UNSPECIFIED)                {                    try                    {                        b.BarWidth = textBoxBarWidth.Text.Trim().Length < 1 ? null : (int?)Convert.ToInt32(textBoxBarWidth.Text.Trim());                    }                    catch (Exception ex)                    {                        throw new Exception("Unable to parse BarWidth: " + ex.Message, ex);                    }                    try                    {                        b.AspectRatio = textBoxAspectRatio.Text.Trim().Length < 1 ? null : (double?)Convert.ToDouble(textBoxAspectRatio.Text.Trim());                    }                    catch (Exception ex)                    {                        throw new Exception("Unable to parse AspectRatio: " + ex.Message, ex);                    }                    b.IncludeLabel = this.chkGenerateLabel.Checked;                    b.RotateFlipType = (RotateFlipType)Enum.Parse(typeof(RotateFlipType), this.cbRotateFlip.SelectedItem.ToString(), true);                    if (!String.IsNullOrEmpty(this.textBox1.Text.Trim()))                        b.AlternateLabel = this.textBox1.Text;                    else                        b.AlternateLabel = this.txtData.Text;                    //label alignment and position                    switch (this.cbLabelLocation.SelectedItem.ToString().Trim().ToUpper())                    {                        case "BOTTOMLEFT":  b.LabelPosition = LabelPositions.BOTTOMLEFT; break;                        case "BOTTOMRIGHT": b.LabelPosition = LabelPositions.BOTTOMRIGHT; break;                        case "TOPCENTER": b.LabelPosition = LabelPositions.TOPCENTER; break;                        case "TOPLEFT": b.LabelPosition = LabelPositions.TOPLEFT; break;                        case "TOPRIGHT": b.LabelPosition = LabelPositions.TOPRIGHT; break;                        default: b.LabelPosition = LabelPositions.BOTTOMCENTER; break;                    }//switch                    //===== Encoding performed here =====                    barcode.BackgroundImage = b.Encode(type, this.txtData.Text.Trim(), this.btnForeColor.BackColor, this.btnBackColor.BackColor, W, H);                    //===================================                    //show the encoding time                    this.lblEncodingTime.Text = "(" + Math.Round(b.EncodingTime, 0, MidpointRounding.AwayFromZero).ToString() + "ms)";                    txtEncoded.Text = b.EncodedValue;                    tsslEncodedType.Text = "Encoding Type: " + b.EncodedType.ToString();                    // Read dynamically calculated Width/Height because the user is interested.                    if (b.BarWidth.HasValue)                        txtWidth.Text = b.Width.ToString();                    if (b.AspectRatio.HasValue)                        txtHeight.Text = b.Height.ToString();                }//if                //reposition the barcode image to the middle                barcode.Location = new Point((this.barcode.Location.X + this.barcode.Width / 2) - barcode.Width / 2, (this.barcode.Location.Y + this.barcode.Height / 2) - barcode.Height / 2);            }//try            catch (Exception ex)            {                MessageBox.Show(ex.Message);            }//catch        }//btnEncode_Click

版权和许可

 Apache-2.0 License

开源地址

https://github.com/barnhill/barcodelib

转载地址:http://fdudi.baihongyu.com/

你可能感兴趣的文章
linux不同模块completion通信
查看>>
linux printf获得时间戳
查看>>
C语言位扩展
查看>>
linux dump_backtrace
查看>>
linux irqdebug
查看>>
git 常用命令
查看>>
linux位操作API
查看>>
snprintf 函数用法
查看>>
uboot.lds文件分析
查看>>
uboot start.s文件分析
查看>>
没有路由器的情况下,开发板,虚拟机Ubuntu,win10主机,三者也可以ping通
查看>>
本地服务方式搭建etcd集群
查看>>
安装k8s Master高可用集群
查看>>
忽略图片透明区域的事件(Flex)
查看>>
忽略图片透明区域的事件(Flex)
查看>>
AS3 Flex基础知识100条
查看>>
Flex动态获取flash资源库文件
查看>>
flex中设置Label标签文字的自动换行
查看>>
Flex 中的元数据标签
查看>>
flex4 中创建自定义弹出窗口
查看>>