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:
- Caratteristiche del generatore di codici a barre WPF
- API del generatore di codici a barre C#
- Passaggi per creare un generatore di codici a barre WPF
- Genera codice a barre con opzioni aggiuntive
- Generatore di codici a barre WPF demo
- Scarica codice sorgente
Caratteristiche del generatore di codici a barre WPF
Il nostro generatore di codici a barre WPF avrà le seguenti caratteristiche.
- Genera i seguenti tipi di simbologie di codici a barre:
- Codice128
- Codice11
- Codice39
- QR
- matrice di dati
- EAN13
- EAN8
- ITF14
- PDF417
- Salva l’immagine del codice a barre generata nei seguenti formati:
- 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.
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.
- 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:
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.
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.