Штрих-код содержит информацию о товаре или компании, визуально представленную в машиночитаемом виде. Штрих-коды широко используются для отслеживания поставок и управления запасами. Мы можем легко генерировать различные типы штрих-кодов в приложениях WPF. В этой статье мы узнаем, как создать и отобразить изображение штрих-кода в приложении WPF. После выполнения указанных шагов у нас будет собственный генератор штрих-кода WPF на C#. Итак, начнем.
Статья должна охватывать следующие темы:
- Возможности генератора штрих-кода WPF
- API генератора штрих-кода C#
- Этапы создания генератора штрих-кода WPF
- Создать штрих-код с дополнительными параметрами
- Демонстрационный генератор штрих-кода WPF
- Скачать исходный код
Особенности генератора штрих-кода WPF
Наш генератор штрих-кода WPF будет иметь следующие функции.
- Создайте следующие типы символик штрих-кода:
- Код128
- Код11
- Код39
- QR-код
- Матрица данных
- EAN13
- EAN8
- ITF14
- PDF417
- Сохраните сгенерированное изображение штрих-кода в следующих форматах:
- Предварительный просмотр сгенерированного изображения штрих-кода.
API-интерфейс генератора штрих-кода C#
Мы будем использовать API Aspose.BarCode for .NET для создания изображений штрих-кода и их предварительного просмотра в приложении WPF. Это многофункциональный API, который позволяет создавать, сканировать и считывать широкий спектр типов штрих-кодов. Кроме того, он позволяет управлять внешним видом сгенерированных штрих-кодов, таких как цвет фона, цвет полосы, угол поворота, x-размер, качество изображения, разрешение, подписи, размер и многое другое.
Шаги по созданию генератора штрих-кода WPF
Мы можем сгенерировать и отобразить изображение штрих-кода в приложении WPF, выполнив следующие шаги:
- Во-первых, создайте новый проект и выберите шаблон проекта приложения WPF.
Затем введите название проекта, например, «BarcodeGen».
Затем выберите платформу .NET, а затем выберите создание.
Затем откройте диспетчер пакетов NuGet и установите пакет 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 Barcode Generator с GitHub.
Получить бесплатную лицензию
Вы можете получить бесплатную временную лицензию, чтобы попробовать библиотеку без ограничений пробной версии.
Вывод
В этой статье мы узнали, как генерировать различные типы штрих-кодов в приложении WPF. Мы также видели, как программно просмотреть сгенерированное изображение штрих-кода. Кроме того, вы можете узнать больше об Aspose.BarCode for .NET API, используя документацию. В случае возникновения каких-либо неясностей, пожалуйста, свяжитесь с нами на нашем форуме.