开源项目barcodelib-C#条形码图像生成库

介绍

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

用法

该库包含一个名为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 alignmentswitch (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;}//switchTYPE 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;}//switchtry{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;elseb.AlternateLabel = this.txtData.Text;//label alignment and positionswitch (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 timethis.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 middlebarcode.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);}//trycatch (Exception ex){MessageBox.Show(ex.Message);}//catch}//btnEncode_Click

版权和许可

 Apache-2.0 License

开源地址

https://github.com/barnhill/barcodelib

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/305766.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

成功测试管理者的九大原则

简介 许多测试管理者是从技术部门进到管理阶层的。尽管他们有可能受过很多测试或软件工程的培训和指导&#xff0c;但他们还是很难经常从失败和错误中学到管理技巧。作为一个管理者&#xff0c;你有两项基本工作&#xff1a;找出为你工作的最好 的员工并且建立一个能够使员工完…

categories php,manage-categories.php

include common.php;include header.php;include menu.php;Typecho_Widget::widget(Widget_Metas_Category_Admin)->to($categories);?><?php include page-title.php; ?><?php _e(删除); ?><?php _e(刷新); ?><?php $categories->parse…

ctf php 读取flag,BugkuCTF flag.php(反序列化)

进去后是个登录页面&#xff0c;但是login根本不会跳转&#xff0c;看源码也没提示&#xff0c;但是这道题给了一个提示&#xff1a;hint&#xff0c;那么盲猜应该是一个get参数&#xff0c;因为post不能跳转&#xff0c;那么get总有内容吧&#xff0c;跟上hint参数&#xff0c…

2021技术人新展望

一、前言各位小伙伴们还有几天新的一年即将来临&#xff0c;这篇文章作为今年的结束吧。不知道大家对自己每一年的技术发展规划是什么&#xff0c;我在这里分享一下我2021年的新的规划&#xff0c;这里非常感谢各位小伙伴对我的关注。二、内容概要2021的布局客户端技术分享服务…

在 ASP.NET 中实现会话状态的基础

简介 在 Web 应用程序这样的无状态环境中&#xff0c;了解会话状态的概念并没有实际的意义。尽管如此&#xff0c;有效的状态管理对于大多数 Web 应用程序来说都是一个必备的功能。Microsoft ASP.NET 以及许多其他服务器端编程环境都提供了一个抽象层&#xff0c;允许应用程序基…

【One by One系列】IdentityServer4(三)使用用户名和密码

继续介绍IdentityServer4,我们上篇介绍了IdentityServer4实现OAuth2.0的授权方式之一的客户端凭证&#xff0c;接下来我们继续介绍OAuth2.0的另外一种授权方式密码式&#xff0c;Resource Owner Password Credentials。post请求token?grant_typepassword&usernameUSERNAME…

oracle数据缓冲区作用,Oracle内存结构(02)--缓冲区

用户提交一个新SQL语句时&#xff0c;Oracle会分析(parse)该句SQL(硬解析)&#xff0c;这个过程将耗费相对较多的时间。分析完毕后&#xff0c;oracle会将该SQL的分析结果给保存在Library Cache中&#xff0c;当数据库再次执行该SQL时&#xff0c;oracle将直接取第一次分析结果…

使用设计模式构建通用数据库访问类

在应用程序的设计中&#xff0c;数据库的访问是非常重要的&#xff0c;我们通常需要将对数据库的访问集中起来&#xff0c;以保证良好的封装性和可维护性。在.Net中&#xff0c;数据库的访问&#xff0c;对于微软自家的SqlServer和其他数据库&#xff08;支持OleDb&#xff09;…

【One by One系列】IdentityServer4(二)使用Client Credentials保护API资源

书接上回&#xff0c;我们将会正式开始介绍IdentityServer4。IdentityServer4是实现了OAuth2.0OpenId Connect两种协议的优秀第三方库,属于.net生态中的优秀成员。可以很容易集成至ASP.NET Core&#xff0c;颁发token。使用Id4基本步骤如下&#xff1a;**1.**在Startup.Configu…

善良成就未来

弗莱明是一个穷苦的苏格兰农夫&#xff0c;有一天当他在田里工作时&#xff0c;听到附近泥沼里有人发出求救的哭声。于是&#xff0c;他放下农具&#xff0c;跑到泥沼边&#xff0c;发现一个小孩掉到了里面&#xff0c;弗莱明忙把这个孩子从死亡的边缘救了出来。 隔天&#xff…

office连接oracle,Access(VBA)连接Oracle数据库的代码

access是包含前台程序开发和后台数据库的应用软件。可以利用access作为前台开发&#xff0c;后台用sqlServer&#xff0c;oracle这些作为数据库。而access连接数据库&#xff0c;可以利用链接表。直接读取表记录。也可以通过ADO等数据操作方式读取数据库方法1:odbc连接方式Dim …

开放封闭在.NET中

对修改是封闭的&#xff0c;对扩展是开放的。新需求对于已上线的系统是司空见惯的&#xff0c;最佳实践告诉我们对生产中的代码在扩展功能时不要直接修改&#xff0c;而是去重写一个新的方法&#xff0c;新类型或新服务去扩展它&#xff0c;这道理很简单&#xff0c;任何即有代…

用sniffer技术盗取电话银行密码

用sniffer技术盗取电话银行密码 此篇讲解盗取&#xff0c;破解请看我博客上另一篇文章。http://polugen.cnblogs.com什么是sniffer Sniffer&#xff0c;嗅探器&#xff0c;是一种威胁性极大的被动攻击工具。使用这种工具&#xff0c;可以监视网络的状态、数据流动情况以及网络上…

oracle dbf文件设置,oracle移动数据dbf文件

ORACLE数据库由数据文件&#xff0c;控制文件和联机日志文件三种文件组成。由于磁盘空间的变化&#xff0c;或者基于数据库磁盘I/O性能的调整等&#xff0c;数据库管理员可能会考虑移动数据库文件。下面以linux平台为例&#xff0c;分别讨论数据文件的移动方法。移动数据文件&a…

使用 Avalonia 开发 UOS 原生应用

最近很火的是国产的操作系统 UOS 系统&#xff0c;这个系统现在存在的问题就是生态没搭建起来。作为 dotnet 开发者&#xff0c;可以通过很多不同方向的技术为 UOS 系统生态贡献应用&#xff0c;如 Xamarin 和 GTK# 或 wine 和 win32 应用&#xff0c;或 mono 和 WinForms 应用…

堆和栈的联系与区别(转贴)

总结的不错.Part 1&#xff1a; 首先&#xff0c;我们举一个例子&#xff1a; void f() { int* pnew int[5]; } 这条短短的一句话就包含了堆与栈&#xff0c;看到new&#xff0c;我们首先就应该想到&#xff0c;我们分配了一块堆内存&#xff0c;那么指针p呢&#xff1f;他分…

oracle leg函数,032-函数的嵌套与LEGB原则

函数的嵌套函数也是可以嵌套的。也就是可以在一个函数内部定义和运行另一个函数。举个例子&#xff1a;>>> def funa():print(funa()正在被调用)def funb():print(funb()正在被调用)funb()>>> funa()funa()正在被调用funb()正在被调用在上述举例中&#xff0…

云原生那些顶级开源项目,你都用过哪些?

CNCF&#xff0c;英文全称为Cloud Native Computing Foundation&#xff0c;中文译为“云原生计算基金会”, 构建可持续生态系统&#xff0c;并围绕一系列高质量开源项目促进社区的发展&#xff0c;本文大概介绍下几个主要的项目。???? Kubernetes⭐ Star: 73.5k https://g…

~~~~我是一棵小树苗~~~~

其实我在博客园注册已经一个多星期了&#xff0c;可是直到今天才写了这么一点东西。有点不上进啊&#xff01;&#xff01;本来呢&#xff0c;我在注册完的第二天就开始写了&#xff0c;刚开始把手放在键盘上&#xff0c;能有两分钟没打一个字。&#xff08;其实我真的不会写&a…

oracle数据库 append,oracle中insert,copy,insert append执行对比

oracle中insert&#xff0c;copy&#xff0c;insert append执行对比还是由于迁移数据库&#xff0c;测试了insert&#xff0c;copy&#xff0c;insert append的执行速度。环境&#xff1a;oracle9i向oracle11g迁移&#xff0c;linux系统。表已建立&#xff0c;只允许插入数据&a…