Создание и отображение изображения штрих-кода в WPF

Штрих-код содержит информацию о товаре или компании, визуально представленную в машиночитаемом виде. Штрих-коды широко используются для отслеживания поставок и управления запасами. Мы можем легко генерировать различные типы штрих-кодов в приложениях WPF. В этой статье мы узнаем, как создать и отобразить изображение штрих-кода в приложении WPF. После выполнения указанных шагов у нас будет собственный генератор штрих-кода WPF на C#. Итак, начнем.

Статья должна охватывать следующие темы:

  1. Возможности генератора штрих-кода WPF
  2. API генератора штрих-кода C#
  3. Этапы создания генератора штрих-кода WPF
  4. Создать штрих-код с дополнительными параметрами
  5. Демонстрационный генератор штрих-кода WPF
  6. Скачать исходный код

Особенности генератора штрих-кода WPF

Наш генератор штрих-кода WPF будет иметь следующие функции.

  1. Создайте следующие типы символик штрих-кода:
    • Код128
    • Код11
    • Код39
    • QR-код
    • Матрица данных
    • EAN13
    • EAN8
    • ITF14
    • PDF417
  2. Сохраните сгенерированное изображение штрих-кода в следующих форматах:
  3. Предварительный просмотр сгенерированного изображения штрих-кода.

API-интерфейс генератора штрих-кода C#

Мы будем использовать API Aspose.BarCode for .NET для создания изображений штрих-кода и их предварительного просмотра в приложении WPF. Это многофункциональный API, который позволяет создавать, сканировать и считывать широкий спектр типов штрих-кодов. Кроме того, он позволяет управлять внешним видом сгенерированных штрих-кодов, таких как цвет фона, цвет полосы, угол поворота, x-размер, качество изображения, разрешение, подписи, размер и многое другое.

Шаги по созданию генератора штрих-кода WPF

Мы можем сгенерировать и отобразить изображение штрих-кода в приложении WPF, выполнив следующие шаги:

  • Во-первых, создайте новый проект и выберите шаблон проекта приложения WPF.
Select the project template.

Select the project template.

  • Затем введите название проекта, например, «BarcodeGen».

  • Затем выберите платформу .NET, а затем выберите создание.

  • Затем откройте диспетчер пакетов NuGet и установите пакет Aspose.BarCode для .NET.

Установите Aspose.BarCode для .NET

Установите Aspose.BarCode для .NET

  • Затем добавьте новый класс Barcode.cs для определения штрих-кода.
public class Barcode
{
    public string? Text { get; set; }

    public BaseEncodeType? BarcodeType { get; set; }

    public BarCodeImageFormat ImageType { get; set; }
}
  • Затем откройте MainWindow.xaml и добавьте необходимые элементы управления, как показано ниже:
Добавьте необходимые элементы управления

Добавьте необходимые элементы управления

Вы также можете заменить содержимое MainWindow.xaml следующим сценарием.

<Window x:Class="BarcodeGen.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:BarcodeGen"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">

    <Grid Width="800" Height="384">
        <Grid.RowDefinitions>
            <RowDefinition Height="191*"/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Label Content="Select Barcode Type:" HorizontalAlignment="Left" Margin="10,16,0,0" VerticalAlignment="Top" FontSize="14" FontWeight="Bold"/>
        <ComboBox x:Name="comboBarcodeType" HorizontalAlignment="Left" Margin="10,47,0,305" Width="273" Text="Select Barcode Type" IsReadOnly="True" SelectedIndex="-1" FontSize="14" Height="30">
            <ComboBoxItem Content="Code128"></ComboBoxItem>
            <ComboBoxItem Content="Code11"></ComboBoxItem>
            <ComboBoxItem Content="Code32"></ComboBoxItem>
            <ComboBoxItem Content="QR"></ComboBoxItem>
            <ComboBoxItem Content="DataMatrix"></ComboBoxItem>
            <ComboBoxItem Content="EAN13"></ComboBoxItem>
            <ComboBoxItem Content="EAN8"></ComboBoxItem>
            <ComboBoxItem Content="ITF14"></ComboBoxItem>
            <ComboBoxItem Content="PDF417"></ComboBoxItem>
        </ComboBox>

        <Button Name="btnGenerate" Click="btnGenerate_Click" Content="Generate Barcode" HorizontalAlignment="Left" Margin="10,346,0,0" VerticalAlignment="Top" Height="28" Width="273" FontSize="14" FontWeight="Bold"/>
        <Label Content="Enter Your Text:" HorizontalAlignment="Left" Margin="10,92,0,0" VerticalAlignment="Top" FontSize="14" FontWeight="Bold"/>
        <TextBox Name="tbCodeText" TextWrapping="Wrap" Margin="10,123,517,134" Width="273" Height="125"/>
        <Label Content="Select Image Format:" HorizontalAlignment="Left" Margin="10,253,0,0" VerticalAlignment="Top" FontSize="14" FontWeight="Bold"/>
        <RadioButton Name="rbPng" Content="Png" GroupName="rbImageType" Margin="10,285,739,77" Width="51" Height="20" FontSize="14" IsChecked="True"/>
        <RadioButton Name="rbJpg" Content="Jpeg" GroupName="rbImageType" Margin="121,285,628,77" Width="51" Height="20" FontSize="14"/>
        <RadioButton Name="rbBmp" Content="Bmp" GroupName="rbImageType" Margin="232,285,517,77" Width="51" Height="20" FontSize="14"/>
        <CheckBox Name="cbGenerateWithOptions" Height="20" Margin="10,321,517,41" Content="Generate with Options" />
        <GroupBox Header="View Generated Barcode" Margin="317,0,22,0" FontSize="14" FontWeight="Bold">
            <Image Name="imgDynamic" Margin="6,-6,7,6" Stretch="None"  />
        </GroupBox>
    </Grid>
</Window>
  • Затем откройте класс MainWindow.xaml.cs и добавьте событие btnGenerateClick для обработки нажатия кнопки «Создать штрих-код».
private void btnGenerate_Click(object sender, RoutedEventArgs e)
{
    // Установить по умолчанию как PNG
    var imageType = "Png";

    // Получить выбранный пользователем формат изображения
    if(rbPng.IsChecked == true)
    {
        imageType = rbPng.Content.ToString();
    }
    else if(rbBmp.IsChecked == true)
    {
        imageType = rbBmp.Content.ToString();
    }
    else if(rbJpg.IsChecked == true)
    {
        imageType = rbJpg.Content.ToString();
    }

    // Получить формат изображения из перечисления
    var imageFormat = (BarCodeImageFormat)Enum.Parse(typeof(BarCodeImageFormat), imageType.ToString());

    // Установить по умолчанию как Code128
    var encodeType = EncodeTypes.Code128;

    // Получить выбранный пользователем тип штрих-кода
    if (!string.IsNullOrEmpty(comboBarcodeType.Text))
    {
        switch (comboBarcodeType.Text)
        {
            case "Code128":
                encodeType = EncodeTypes.Code128;
                break;

            case "ITF14":
                encodeType = EncodeTypes.ITF14;
                break;

            case "EAN13":
                encodeType = EncodeTypes.EAN13;
                break;

            case "Datamatrix":
                encodeType = EncodeTypes.DataMatrix;
                break;

            case "Code32":
                encodeType = EncodeTypes.Code32;
                break;

            case "Code11":
                encodeType = EncodeTypes.Code11;
                break;

            case "PDF417":
                encodeType = EncodeTypes.Pdf417;
                break;

            case "EAN8":
                encodeType = EncodeTypes.EAN8;
                break;

            case "QR":
                encodeType = EncodeTypes.QR;
                break;
        }
    }

    // Инициализировать объект штрих-кода
    Barcode barcode = new Barcode();
    barcode.Text = tbCodeText.Text;
    barcode.BarcodeType = encodeType;
    barcode.ImageType = imageFormat;

    try
    {
        string imagePath = "";

        if (cbGenerateWithOptions.IsChecked == true)
        {
            // Сгенерируйте штрих-код с дополнительными параметрами и получите путь к изображению
            imagePath = GenerateBarcodeWithOptions(barcode);
        }
        else
        {
            // Сгенерировать штрих-код и получить путь к изображению
            imagePath = GenerateBarcode(barcode);
        }

        // Показать изображение
        Uri fileUri = new Uri(Path.GetFullPath(imagePath));
        imgDynamic.Source = new BitmapImage(fileUri);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
  • После этого добавьте функцию для генерации штрих-кода.
private string GenerateBarcode(Barcode barcode)
{
    // Путь к изображению
    string imagePath = comboBarcodeType.Text + "." + barcode.ImageType;

    // Инициализировать генератор штрих-кода
    BarcodeGenerator generator = new BarcodeGenerator(barcode.BarcodeType, barcode.Text);

    // Сохранить изображение
    generator.Save(imagePath, barcode.ImageType);

    return imagePath;
}
  • Наконец, запустите приложение.

Создать штрих-код с дополнительными параметрами

Мы также можем генерировать штрих-коды с дополнительными параметрами, характерными для типов штрих-кодов. В генератор штрих-кода WPF мы добавили флажок для создания штрих-кода с параметрами. Он вызовет следующую функцию, указывающую дополнительные параметры для разных типов штрих-кодов.

private string GenerateBarcodeWithOptions(Barcode barcode)
{
    // Путь к изображению
    string imagePath = comboBarcodeType.Text + "." + barcode.ImageType;

    // Инициализировать генератор штрих-кода
    BarcodeGenerator generator = new BarcodeGenerator(barcode.BarcodeType, barcode.Text);

    if(barcode.BarcodeType == EncodeTypes.QR)
    {
        generator.Parameters.Barcode.XDimension.Pixels = 4;
        //установить автоматическую версию
        generator.Parameters.Barcode.QR.QrVersion = QRVersion.Auto;
        //Установите тип автоматического кодирования QR
        generator.Parameters.Barcode.QR.QrEncodeType = QREncodeType.Auto;
    } 
    else if(barcode.BarcodeType == EncodeTypes.Pdf417)
    {
        generator.Parameters.Barcode.XDimension.Pixels = 2;
        generator.Parameters.Barcode.Pdf417.Columns = 3;
    }
    else if(barcode.BarcodeType == EncodeTypes.DataMatrix)
    {
        //установите DataMatrix ECC на 140
        generator.Parameters.Barcode.DataMatrix.DataMatrixEcc = DataMatrixEccType.Ecc200;
    }
    else if(barcode.BarcodeType == EncodeTypes.Code32)
    {
        generator.Parameters.Barcode.XDimension.Millimeters = 1f;
    }
    else
    {
        generator.Parameters.Barcode.XDimension.Pixels = 2;
        //установить BarHeight 40
        generator.Parameters.Barcode.BarHeight.Pixels = 40;
    }

    // Сохранить изображение
    generator.Save(imagePath, barcode.ImageType);

    return imagePath;
}

Вы можете прочитать больше о Спецификах генерации для типов штрих-кода в документации.

Демонстрационный генератор штрих-кода WPF

Ниже приведена демонстрация приложения WPF Barcode Generator, которое мы только что создали.

Демонстрационный генератор штрих-кода WPF

Демонстрационный генератор штрих-кода WPF

Скачать исходный код

Вы можете загрузить полный исходный код приложения WPF Barcode Generator с GitHub.

Получить бесплатную лицензию

Вы можете получить бесплатную временную лицензию, чтобы попробовать библиотеку без ограничений пробной версии.

Вывод

В этой статье мы узнали, как генерировать различные типы штрих-кодов в приложении WPF. Мы также видели, как программно просмотреть сгенерированное изображение штрих-кода. Кроме того, вы можете узнать больше об Aspose.BarCode for .NET API, используя документацию. В случае возникновения каких-либо неясностей, пожалуйста, свяжитесь с нами на нашем форуме.

Смотрите также