Un code-barres contient des informations sur un produit ou une entreprise, présentées visuellement sous une forme lisible par machine. Les codes-barres sont largement utilisés pour suivre les expéditions et la gestion des stocks. Nous pouvons facilement générer différents types de codes-barres dans les applications WPF. Dans cet article, nous allons apprendre à générer et afficher une image de code-barres dans l’application WPF. Après avoir suivi les étapes mentionnées, nous aurons notre propre générateur de code-barres WPF en C#. Alors commençons.
L’article doit couvrir les sujets suivants :
- Caractéristiques du générateur de codes-barres WPF
- API du générateur de code-barres C#
- Étapes pour créer un générateur de codes-barres WPF
- Générer un code-barres avec des options supplémentaires
- Démo WPF Barcode Generator
- Télécharger le code source
Fonctionnalités du générateur de codes-barres WPF
Notre générateur de codes-barres WPF aura les caractéristiques suivantes.
- Générez les types de symbologies de code-barres suivants :
- Code128
- Code11
- Code39
- QR
- Matrice de données
- EAN13
- EAN8
- ITF14
- PDF417
- Enregistrez l’image de code-barres générée dans les formats suivants :
- Prévisualisez l’image de code-barres générée.
API de générateur de code-barres C#
Nous utiliserons l’API Aspose.BarCode for .NET pour générer des images de codes-barres et les prévisualiser dans l’application WPF. Il s’agit d’une API riche en fonctionnalités qui vous permet de générer, numériser et lire un large éventail de types de codes à barres. De plus, il permet de manipuler l’apparence des codes-barres générés tels que la couleur d’arrière-plan, la couleur de la barre, l’angle de rotation, la dimension x, la qualité de l’image, la résolution, les légendes, la taille et bien plus encore.
Étapes pour créer un générateur de codes à barres WPF
Nous pouvons générer et afficher une image de code-barres dans l’application WPF en suivant les étapes ci-dessous :
- Tout d’abord, créez un nouveau projet et sélectionnez le modèle de projet Application WPF.
Entrez ensuite le nom du projet, par exemple “BarcodeGen”.
Ensuite, sélectionnez le framework .NET, puis choisissez de créer.
Ensuite, ouvrez NuGet Package Manager et installez le package Aspose.BarCode for .NET.
- Ensuite, ajoutez une nouvelle classe Barcode.cs pour définir le code-barres.
public class Barcode
{
public string? Text { get; set; }
public BaseEncodeType? BarcodeType { get; set; }
public BarCodeImageFormat ImageType { get; set; }
}
- Ensuite, ouvrez MainWindow.xaml et ajoutez les contrôles requis comme indiqué ci-dessous :
Vous pouvez également remplacer le contenu de MainWindow.xaml par le script suivant.
<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>
- Ensuite, ouvrez la classe MainWindow.xaml.cs et ajoutez l’événement btnGenerateClick pour gérer l’action de clic pour le bouton Générer un code à barres.
private void btnGenerate_Click(object sender, RoutedEventArgs e)
{
// Définir par défaut comme Png
var imageType = "Png";
// Obtenir le format d'image sélectionné par l'utilisateur
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();
}
// Obtenir le format d'image à partir de l'énumération
var imageFormat = (BarCodeImageFormat)Enum.Parse(typeof(BarCodeImageFormat), imageType.ToString());
// Définir par défaut comme Code128
var encodeType = EncodeTypes.Code128;
// Obtenir le type de code-barres sélectionné par l'utilisateur
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;
}
}
// Initialiser l'objet code-barres
Barcode barcode = new Barcode();
barcode.Text = tbCodeText.Text;
barcode.BarcodeType = encodeType;
barcode.ImageType = imageFormat;
try
{
string imagePath = "";
if (cbGenerateWithOptions.IsChecked == true)
{
// Générer un code-barres avec des options supplémentaires et obtenir le chemin de l'image
imagePath = GenerateBarcodeWithOptions(barcode);
}
else
{
// Générer un code-barres et obtenir le chemin de l'image
imagePath = GenerateBarcode(barcode);
}
// Afficher l'image
Uri fileUri = new Uri(Path.GetFullPath(imagePath));
imgDynamic.Source = new BitmapImage(fileUri);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
- Après cela, ajoutez une fonction pour générer un code-barres.
private string GenerateBarcode(Barcode barcode)
{
// Chemin de l'image
string imagePath = comboBarcodeType.Text + "." + barcode.ImageType;
// Initialiser le générateur de code-barres
BarcodeGenerator generator = new BarcodeGenerator(barcode.BarcodeType, barcode.Text);
// Enregistrer l'image
generator.Save(imagePath, barcode.ImageType);
return imagePath;
}
- Enfin, exécutez l’application.
Générer un code-barres avec des options supplémentaires
Nous pouvons également générer des codes-barres avec des options supplémentaires spécifiques aux types de codes-barres. Dans le générateur de code-barres WPF, nous avons ajouté une case à cocher pour générer un code-barres avec des options. Il appellera la fonction suivante en spécifiant des options supplémentaires pour différents types de codes à barres.
private string GenerateBarcodeWithOptions(Barcode barcode)
{
// Chemin de l'image
string imagePath = comboBarcodeType.Text + "." + barcode.ImageType;
// Initialiser le générateur de code-barres
BarcodeGenerator generator = new BarcodeGenerator(barcode.BarcodeType, barcode.Text);
if(barcode.BarcodeType == EncodeTypes.QR)
{
generator.Parameters.Barcode.XDimension.Pixels = 4;
//définir la version automatique
generator.Parameters.Barcode.QR.QrVersion = QRVersion.Auto;
//Définir le type d'encodage QR automatique
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)
{
//définir DataMatrix ECC sur 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;
//définir la hauteur de la barre 40
generator.Parameters.Barcode.BarHeight.Pixels = 40;
}
// Enregistrer l'image
generator.Save(imagePath, barcode.ImageType);
return imagePath;
}
Vous pouvez en savoir plus sur Generation Specifics for Barcode Types dans la documentation.
Démo Générateur de codes-barres WPF
Voici la démonstration de l’application WPF Barcode Generator que nous venons de créer.
Télécharger le code source
Vous pouvez télécharger le code source complet de l’application WPF Barcode Generator à partir de GitHub.
Obtenez une licence gratuite
Vous pouvez obtenir une licence temporaire gratuite pour essayer la bibliothèque sans limitation d’évaluation.
Conclusion
Dans cet article, nous avons appris à générer différents types de codes-barres dans une application WPF. Nous avons également vu comment prévisualiser l’image de code-barres générée par programmation. En outre, vous pouvez en savoir plus sur l’API Aspose.BarCode pour .NET en utilisant la documentation. En cas d’ambiguïté, n’hésitez pas à nous contacter sur notre forum.