Genera e visualizza l'immagine del codice a barre in WPF

Un codice a barre contiene informazioni su un prodotto o un’azienda, presentate visivamente in un formato leggibile dalla macchina. I codici a barre sono ampiamente utilizzati per tracciare le spedizioni e la gestione dell’inventario. Possiamo facilmente generare vari tipi di codici a barre nelle applicazioni WPF. In questo articolo impareremo come generare e visualizzare un’immagine di codice a barre nell’applicazione WPF. Dopo aver seguito i passaggi menzionati, avremo il nostro generatore di codici a barre WPF in C#. Quindi iniziamo.

L’articolo tratterà i seguenti argomenti:

  1. Caratteristiche del generatore di codici a barre WPF
  2. API del generatore di codici a barre C#
  3. Passaggi per creare un generatore di codici a barre WPF
  4. Genera codice a barre con opzioni aggiuntive
  5. Generatore di codici a barre WPF demo
  6. Scarica codice sorgente

Caratteristiche del generatore di codici a barre WPF

Il nostro generatore di codici a barre WPF avrà le seguenti caratteristiche.

  1. Genera i seguenti tipi di simbologie di codici a barre:
    • Codice128
    • Codice11
    • Codice39
    • QR
    • matrice di dati
    • EAN13
    • EAN8
    • ITF14
    • PDF417
  2. Salva l’immagine del codice a barre generata nei seguenti formati:
  3. Visualizza in anteprima l’immagine del codice a barre generata.

API del generatore di codici a barre C#

Utilizzeremo l’API Aspose.BarCode for .NET per generare immagini di codici a barre e visualizzarle in anteprima nell’applicazione WPF. È un’API ricca di funzionalità che ti consente di generare, scansionare e leggere un’ampia gamma di tipi di codici a barre. Inoltre, consente di manipolare l’aspetto dei codici a barre generati come colore di sfondo, colore della barra, angolo di rotazione, dimensione x, qualità dell’immagine, risoluzione, didascalie, dimensioni e molto altro.

Passaggi per creare un generatore di codici a barre WPF

Possiamo generare e visualizzare un’immagine di codice a barre nell’applicazione WPF seguendo i passaggi indicati di seguito:

  • Innanzitutto, crea un nuovo progetto e seleziona il modello di progetto dell’applicazione WPF.
Select the project template.

Select the project template.

  • Successivamente, inserisci il nome del progetto, ad esempio “BarcodeGen”.

  • Quindi, seleziona il framework .NET e quindi scegli di creare.

  • Quindi, apri NuGet Package Manager e installa il pacchetto Aspose.BarCode for .NET.

Installa Aspose.BarCode per .NET

Installa Aspose.BarCode per .NET

  • Quindi, aggiungi una nuova classe Barcode.cs per definire il codice a barre.
public class Barcode
{
    public string? Text { get; set; }

    public BaseEncodeType? BarcodeType { get; set; }

    public BarCodeImageFormat ImageType { get; set; }
}
  • Quindi, apri MainWindow.xaml e aggiungi i controlli richiesti come mostrato di seguito:
Aggiungi i controlli richiesti

Aggiungi i controlli richiesti

Puoi anche sostituire il contenuto di MainWindow.xaml con il seguente script.

<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>
  • Quindi, apri la classe MainWindow.xaml.cs e aggiungi l’evento btnGenerateClick per gestire l’azione di clic per il pulsante Genera codice a barre.
private void btnGenerate_Click(object sender, RoutedEventArgs e)
{
    // Imposta l'impostazione predefinita come Png
    var imageType = "Png";

    // Ottieni il formato immagine selezionato dall'utente
    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();
    }

    // Ottieni il formato immagine da enum
    var imageFormat = (BarCodeImageFormat)Enum.Parse(typeof(BarCodeImageFormat), imageType.ToString());

    // Imposta come predefinito Code128
    var encodeType = EncodeTypes.Code128;

    // Ottieni il tipo di codice a barre selezionato dall'utente
    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;
        }
    }

    // Inizializza oggetto codice a barre
    Barcode barcode = new Barcode();
    barcode.Text = tbCodeText.Text;
    barcode.BarcodeType = encodeType;
    barcode.ImageType = imageFormat;

    try
    {
        string imagePath = "";

        if (cbGenerateWithOptions.IsChecked == true)
        {
            // Genera codice a barre con opzioni aggiuntive e ottieni il percorso dell'immagine
            imagePath = GenerateBarcodeWithOptions(barcode);
        }
        else
        {
            // Genera codice a barre e ottieni il percorso dell'immagine
            imagePath = GenerateBarcode(barcode);
        }

        // Visualizza l'immagine
        Uri fileUri = new Uri(Path.GetFullPath(imagePath));
        imgDynamic.Source = new BitmapImage(fileUri);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
  • Successivamente, aggiungi una funzione per generare un codice a barre.
private string GenerateBarcode(Barcode barcode)
{
    // Percorso dell'immagine
    string imagePath = comboBarcodeType.Text + "." + barcode.ImageType;

    // Inizializza il generatore di codici a barre
    BarcodeGenerator generator = new BarcodeGenerator(barcode.BarcodeType, barcode.Text);

    // Salva l'immagine
    generator.Save(imagePath, barcode.ImageType);

    return imagePath;
}
  • Infine, esegui l’applicazione.

Genera codice a barre con opzioni aggiuntive

Possiamo anche generare codici a barre con opzioni aggiuntive specifiche per i tipi di codici a barre. Nel generatore di codici a barre WPF, abbiamo aggiunto una casella di controllo per generare un codice a barre con le opzioni. Chiamerà la seguente funzione specificando opzioni aggiuntive per diversi tipi di codici a barre.

private string GenerateBarcodeWithOptions(Barcode barcode)
{
    // Percorso dell'immagine
    string imagePath = comboBarcodeType.Text + "." + barcode.ImageType;

    // Inizializza il generatore di codici a barre
    BarcodeGenerator generator = new BarcodeGenerator(barcode.BarcodeType, barcode.Text);

    if(barcode.BarcodeType == EncodeTypes.QR)
    {
        generator.Parameters.Barcode.XDimension.Pixels = 4;
        //imposta la versione automatica
        generator.Parameters.Barcode.QR.QrVersion = QRVersion.Auto;
        //Imposta il tipo di codifica QR automatico
        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)
    {
        //impostare DataMatrix ECC su 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;
        //impostare BarHeight 40
        generator.Parameters.Barcode.BarHeight.Pixels = 40;
    }

    // Salva l'immagine
    generator.Save(imagePath, barcode.ImageType);

    return imagePath;
}

Puoi leggere ulteriori informazioni su Specifiche di generazione per i tipi di codici a barre nella documentazione.

Generatore di codici a barre WPF dimostrativo

Quella che segue è la dimostrazione dell’applicazione WPF Barcode Generator che abbiamo appena creato.

Generatore di codici a barre WPF dimostrativo

Generatore di codici a barre WPF dimostrativo

Scarica il codice sorgente

È possibile scaricare il codice sorgente completo dell’applicazione WPF Barcode Generator da GitHub.

Ottieni una licenza gratuita

Puoi ottenere una licenza temporanea gratuita per provare la libreria senza limitazioni di valutazione.

Conclusione

In questo articolo abbiamo imparato come generare vari tipi di codici a barre in un’applicazione WPF. Abbiamo anche visto come visualizzare in anteprima l’immagine del codice a barre generata in modo programmatico. Inoltre, puoi saperne di più su Aspose.BarCode per .NET API usando la documentazione. In caso di ambiguità, non esitare a contattarci sul nostro forum.

Guarda anche