C#使用BarcodeLib生成条形码的完整代码

 更新时间:2025年06月04日 10:43:58   作者:小码编匠  
现代工业、物流、零售等领域,条形码作为信息识别的重要手段被广泛应用,BarcodeLib是一个开源的C#库,专为大家提供便捷、高效的条形码生成功能,本文将详细介绍如何在WinForm项目中集成和使用BarcodeLib库,帮助大家快速实现条形码的生成与显示,需要的朋友可以参考下

前言

现代工业、物流、零售等领域,条形码作为信息识别的重要手段被广泛应用。BarcodeLib 是一个开源的 C# 库,专为大家提供便捷、高效的条形码生成功能。它支持多种常见的条码格式,并具备良好的可定制性和性能表现。

本文将详细介绍如何在 WinForm 项目中集成和使用 BarcodeLib 库,展示完整的代码示例与运行效果,帮助大家快速实现条形码的生成与显示。

一、BarcodeLib 简介

BarcodeLib 是一个功能强大且易于使用的条形码生成库,适用于 .NET 平台开发。其主要特点包括:

支持多种常见条形码格式(如 Code 128、EAN-13、UPC-A、Code 39、Postnet 等)

提供丰富的样式设置选项(颜色、字体、尺寸等)

高性能生成机制,适合企业级应用

开源免费,便于扩展和定制

二、准备工作

安装 BarcodeLib

创建一个新的 WinForm 应用程序项目后,使用 NuGet 安装 BarcodeLib

Install-Package BarcodeLib

该库基于 SkiaSharp 渲染图像,因此也依赖于 SkiaSharp 的相关包,请确保项目中已正确引用以下命名空间:

using BarcodeStandard;
using SkiaSharp;

三、Barcode 类的核心属性说明

以下是 Barcode 类中一些关键属性:

属性名称描述
RawData要编码的原始数据
EncodedValue编码后的值(只读)
EncodedType条码类型(如 UPC-A, EAN-13 等)
ForeColor / BackColor条码线条颜色 / 背景颜色
LabelFont标签字体设置
Width / Height图像宽度 / 高度
IncludeLabel是否显示标签
AlternateLabel自定义标签文本

这些属性高度自定义条形码的外观和行为。

四、支持的条码类型枚举 (Type)

BarcodeLib 支持以下条码格式(部分列举):

public enum Type
{
    Unspecified,
    UpcA,
    Ean13,
    Code39,
    PostNet,
    Code128,
    // ...其他格式省略
}

可以根据实际需求选择合适的条码类型进行生成。

五、界面设计

在 WinForm 界面中添加以下控件:

  • TextBox:用于输入条码内容,命名为 txtCode

  • Button:用于触发生成操作,命名为 btnGenerate,文本设为"生成条码"

  • PictureBox:用于显示生成的条码图像,命名为 picBarcode

六、示例代码

示例一:基础条码生成

using BarcodeStandard;
using SkiaSharp;

namespace AppBarcodeLib
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnGenerate_Click(object sender, EventArgs e)
        {
            string input = txtCode.Text;
            if (string.IsNullOrWhiteSpace(input))
            {
                MessageBox.Show("请输入条码内容", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            try
            {
                Barcode b = new Barcode();
                b.IncludeLabel = true;

                SKImage skImage = b.Encode(BarcodeStandard.Type.Code128, input, SKColors.Black, SKColors.White, 300, 100);

                using (SKData data = skImage.Encode())
                {
                    using (MemoryStream stream = new MemoryStream(data.ToArray()))
                    {
                        picBarcode.Image = Image.FromStream(stream);
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show($"生成条码时发生错误: {ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }
}

示例二:自定义样式生成

using System;
using System.Drawing;
using System.Windows.Forms;
using BarcodeStandard;
using SkiaSharp;

namespace AppBarcodeLib
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        public void GenerateBarcode()
        {
            Barcode barcode = new Barcode
            {
                RawData = txtCode.Text,
                EncodedType = Type.Ean13,
                Width = 300,
                Height = 150
            };

            barcode.ForeColor = SKColors.Blue;
            barcode.BackColor = SKColors.LightGray;
            barcode.IncludeLabel = true;
            barcode.AlternateLabel = "Custom Text";

            barcode.LabelFont = new SKFont
            {
                Typeface = SKTypeface.FromFamilyName("Times New Roman", SKFontStyle.Bold),
                Size = 32
            };

            SKImage skImage = barcode.Encode(txtCode.Text);

            using (SKData data = skImage.Encode())
            {
                using (MemoryStream stream = new MemoryStream(data.ToArray()))
                {
                    System.Drawing.Image windowsImage = System.Drawing.Image.FromStream(stream);
                    picBarcode.Image = windowsImage;
                }
            }
        }

        private void btnGenerate_Click(object sender, EventArgs e)
        {
            GenerateBarcode();
        }
    }
}

总结

通过本文的学习,我们了解了如何使用 BarcodeLib 库在 WinForm 项目中生成条形码,并掌握了基本的条码类型、样式设置以及图像输出方法。

该库不仅支持多种主流条码格式,还提供了丰富的 API 和良好的性能,非常适合用于需要嵌入条码生成功能的企业级应用程序。无论是简单的条码打印还是复杂的定制化显示,BarcodeLib 都能满足你的需求。

关键词:BarcodeLib,WinForm,条形码生成,Code 128,EAN-13,Code 39,SkiaSharp,C#,图像处理,开源库

最后

以上就是C#使用BarcodeLib生成条形码的完整代码的详细内容,更多关于C# BarcodeLib生成条形码的资料请关注脚本之家其它相关文章!

相关文章

  • C# WPF使用GDI实现截屏功能

    C# WPF使用GDI实现截屏功能

    这篇文章主要为大家详细介绍了C# WPF如何使用GDI实现截屏功能,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以跟随小编一起学习一下
    2024-03-03
  • C#基础语法:可空类型详解

    C#基础语法:可空类型详解

    这篇文章主要介绍了C#基础语法:可空类型详解,本文分析了可空类型的源码、研究了可空类型强制转换为常规类型、可空类型的运算等内容,需要的朋友可以参考下
    2015-06-06
  • C#实现泛型List分组输出元素的方法

    C#实现泛型List分组输出元素的方法

    这篇文章主要介绍了C#实现泛型List分组输出元素的方法,涉及C#针对List的遍历、排序、输出等相关操作技巧,需要的朋友可以参考下
    2017-12-12
  • C#调用js库的方法小结

    C#调用js库的方法小结

    本文主要介绍了C#调用js库的方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • C#基于JsonConvert解析Json数据的方法实例

    C#基于JsonConvert解析Json数据的方法实例

    最近初接触C#语言,发现JSON解析这块和JAVA差异过大,下面这篇文章主要给大家介绍了关于C#基于JsonConvert解析Json数据的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • C#语法之泛型的多种应用

    C#语法之泛型的多种应用

    这篇文章主要介绍了C#语法之泛型的多种应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • unity实现QQ截图功能

    unity实现QQ截图功能

    这篇文章主要为大家详细介绍了unity实现QQ截图功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • C#监控文件夹并自动给图片文件打水印的方法

    C#监控文件夹并自动给图片文件打水印的方法

    这篇文章主要介绍了C#监控文件夹并自动给图片文件打水印的方法,涉及C#针对文件夹及图片操作的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-05-05
  • C#中读取App.config配置文件代码实例

    C#中读取App.config配置文件代码实例

    这篇文章主要介绍了C#中读取App.config配置文件代码实例,包括循环读取、单个读取的方法,需要的朋友可以参考下
    2014-08-08
  • C#使用foreach语句搜索数组元素的方法

    C#使用foreach语句搜索数组元素的方法

    这篇文章主要介绍了C#使用foreach语句搜索数组元素的方法,涉及C#使用foreach语句遍历数组实现搜索功能的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04

最新评论