Générer et afficher une image de code à barres dans WPF

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 :

  1. Caractéristiques du générateur de codes-barres WPF
  2. API du générateur de code-barres C#
  3. Étapes pour créer un générateur de codes-barres WPF
  4. Générer un code-barres avec des options supplémentaires
  5. Démo WPF Barcode Generator
  6. 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.

  1. Générez les types de symbologies de code-barres suivants :
    • Code128
    • Code11
    • Code39
    • QR
    • Matrice de données
    • EAN13
    • EAN8
    • ITF14
    • PDF417
  2. Enregistrez l’image de code-barres générée dans les formats suivants :
  3. 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.
Select the project template.

Select the project template.

  • 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.

Installer Aspose.BarCode pour .NET

Installer Aspose.BarCode pour .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 :
Ajouter les contrôles requis

Ajouter les contrôles requis

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.

Démo Générateur de codes-barres WPF

Démo Générateur de codes-barres WPF

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.

Voir également