Barcode-Bild in WPF generieren und anzeigen

Ein Barcode enthält Informationen über ein Produkt oder ein Unternehmen, visuell dargestellt in maschinenlesbarer Form. Barcodes werden häufig zur Sendungsverfolgung und Bestandsverwaltung verwendet. Wir können problemlos verschiedene Arten von Barcodes in WPF-Anwendungen generieren. In diesem Artikel erfahren Sie, wie Sie ein Barcode-Bild in der WPF-Anwendung generieren und anzeigen. Nachdem Sie die genannten Schritte ausgeführt haben, haben wir unseren eigenen WPF-Barcode-Generator in C#. Fangen wir also an.

Der Artikel soll folgende Themen behandeln:

  1. Funktionen des WPF-Barcode-Generators
  2. C#-Barcode-Generator-API
  3. Schritte zum Erstellen des WPF-Barcode-Generators
  4. Barcode mit zusätzlichen Optionen generieren
  5. Demo-WPF-Barcode-Generator
  6. Quellcode herunterladen

Funktionen des WPF-Barcode-Generators

Unser WPF-Barcode-Generator wird die folgenden Funktionen haben.

  1. Generieren Sie die folgenden Arten von Barcode-Symbologien:
    • Code128
    • Code11
    • Code39
    • QR
    • Datenmatrix
    • EAN13
    • EAN8
    • ITF14
    • PDF417
  2. Speichern Sie das generierte Barcode-Bild in den folgenden Formaten:
  3. Vorschau des generierten Barcode-Bildes.

C#-Barcode-Generator-API

Wir werden die API Aspose.BarCode for .NET verwenden, um Barcode-Bilder zu generieren und sie in der WPF-Anwendung in der Vorschau anzuzeigen. Es ist eine funktionsreiche API, mit der Sie eine Vielzahl von Barcodetypen generieren, scannen und lesen können. Darüber hinaus ermöglicht es, das Erscheinungsbild der generierten Barcodes wie Hintergrundfarbe, Balkenfarbe, Drehwinkel, x-Dimension, Bildqualität, Auflösung, Beschriftungen, Größe und vieles mehr zu manipulieren.

Schritte zum Erstellen des WPF-Barcode-Generators

Wir können ein Barcode-Bild in der WPF-Anwendung generieren und anzeigen, indem wir die folgenden Schritte ausführen:

  • Erstellen Sie zunächst ein neues Projekt und wählen Sie die Projektvorlage WPF-Anwendung aus.
Select the project template.

Select the project template.

  • Geben Sie als nächstes den Namen des Projekts ein, zB “BarcodeGen”.

  • Wählen Sie dann das .NET-Framework aus und wählen Sie dann „Erstellen“.

  • Öffnen Sie als Nächstes den NuGet-Paket-Manager und installieren Sie das Paket Aspose.BarCode for .NET.

Installieren Sie Aspose.BarCode für .NET

Installieren Sie Aspose.BarCode für .NET

  • Fügen Sie dann eine neue Klasse Barcode.cs hinzu, um den Barcode zu definieren.
public class Barcode
{
    public string? Text { get; set; }

    public BaseEncodeType? BarcodeType { get; set; }

    public BarCodeImageFormat ImageType { get; set; }
}
  • Öffnen Sie als Nächstes MainWindow.xaml und fügen Sie die erforderlichen Steuerelemente wie unten gezeigt hinzu:
Fügen Sie die erforderlichen Steuerelemente hinzu

Fügen Sie die erforderlichen Steuerelemente hinzu

Sie können auch den Inhalt von MainWindow.xaml durch das folgende Skript ersetzen.

<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>
  • Öffnen Sie dann die MainWindow.xaml.cs-Klasse und fügen Sie das btnGenerateClick-Ereignis hinzu, um die Klickaktion für die Schaltfläche „Barcode generieren“ zu verarbeiten.
private void btnGenerate_Click(object sender, RoutedEventArgs e)
{
    // Als Standard festlegen Png
    var imageType = "Png";

    // Holen Sie sich das vom Benutzer ausgewählte Bildformat
    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();
    }

    // Holen Sie sich das Bildformat von enum
    var imageFormat = (BarCodeImageFormat)Enum.Parse(typeof(BarCodeImageFormat), imageType.ToString());

    // Standardmäßig als Code128 festlegen
    var encodeType = EncodeTypes.Code128;

    // Holen Sie sich den vom Benutzer ausgewählten Barcode-Typ
    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-Objekt initialisieren
    Barcode barcode = new Barcode();
    barcode.Text = tbCodeText.Text;
    barcode.BarcodeType = encodeType;
    barcode.ImageType = imageFormat;

    try
    {
        string imagePath = "";

        if (cbGenerateWithOptions.IsChecked == true)
        {
            // Generieren Sie Barcodes mit zusätzlichen Optionen und erhalten Sie den Bildpfad
            imagePath = GenerateBarcodeWithOptions(barcode);
        }
        else
        {
            // Barcode generieren und Bildpfad abrufen
            imagePath = GenerateBarcode(barcode);
        }

        // Zeigen Sie das Bild an
        Uri fileUri = new Uri(Path.GetFullPath(imagePath));
        imgDynamic.Source = new BitmapImage(fileUri);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
  • Fügen Sie danach eine Funktion hinzu, um einen Barcode zu generieren.
private string GenerateBarcode(Barcode barcode)
{
    // Bildpfad
    string imagePath = comboBarcodeType.Text + "." + barcode.ImageType;

    // Barcode-Generator initialisieren
    BarcodeGenerator generator = new BarcodeGenerator(barcode.BarcodeType, barcode.Text);

    // Speichern Sie das Bild
    generator.Save(imagePath, barcode.ImageType);

    return imagePath;
}
  • Führen Sie abschließend die Anwendung aus.

Barcode mit zusätzlichen Optionen generieren

Wir können auch Barcodes mit zusätzlichen Optionen generieren, die für Barcodetypen spezifisch sind. Im WPF-Barcode-Generator haben wir ein Kontrollkästchen hinzugefügt, um einen Barcode mit Optionen zu generieren. Es ruft die folgende Funktion auf, die zusätzliche Optionen für verschiedene Barcode-Typen angibt.

private string GenerateBarcodeWithOptions(Barcode barcode)
{
    // Bildpfad
    string imagePath = comboBarcodeType.Text + "." + barcode.ImageType;

    // Barcode-Generator initialisieren
    BarcodeGenerator generator = new BarcodeGenerator(barcode.BarcodeType, barcode.Text);

    if(barcode.BarcodeType == EncodeTypes.QR)
    {
        generator.Parameters.Barcode.XDimension.Pixels = 4;
        //Auto-Version einstellen
        generator.Parameters.Barcode.QR.QrVersion = QRVersion.Auto;
        //Stellen Sie den automatischen QR-Codierungstyp ein
        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)
    {
        //Setzen Sie DataMatrix ECC auf 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;
        //Stellen Sie BarHeight 40 ein
        generator.Parameters.Barcode.BarHeight.Pixels = 40;
    }

    // Speichern Sie das Bild
    generator.Save(imagePath, barcode.ImageType);

    return imagePath;
}

Weitere Informationen zu Generation Specifics for Barcode Types finden Sie in der Dokumentation.

Demo-WPF-Barcode-Generator

Das Folgende ist die Demonstration der WPF-Barcode-Generator-Anwendung, die wir gerade erstellt haben.

Demo-WPF-Barcode-Generator

Demo-WPF-Barcode-Generator

Quellcode herunterladen

Sie können den vollständigen Quellcode der Anwendung WPF Barcode Generator von GitHub herunterladen.

Holen Sie sich eine kostenlose Lizenz

Sie können eine kostenlose temporäre Lizenz erhalten, um die Bibliothek ohne Evaluierungseinschränkungen zu testen.

Fazit

In diesem Artikel haben wir gelernt, wie man verschiedene Arten von Barcodes in einer WPF-Anwendung generiert. Wir haben auch gesehen, wie das generierte Barcode-Bild programmgesteuert in der Vorschau angezeigt wird. Außerdem können Sie mithilfe der Dokumentation mehr über Aspose.BarCode für die .NET-API erfahren. Bei Unklarheiten können Sie sich gerne in unserem Forum an uns wenden.

Siehe auch