Generera och visa streckkodsbild i WPF

En streckkod innehåller information om en produkt eller ett företag, visuellt representerad i en maskinläsbar form. Streckkoder används ofta för att spåra försändelser och lagerhantering. Vi kan enkelt generera olika typer av streckkoder i WPF-applikationer. I den här artikeln kommer vi att lära oss hur man genererar och visar en streckkodsbild i WPF-applikationen. Efter att ha följt de nämnda stegen kommer vi att ha vår egen WPF Barcode Generator i C#. Så låt oss börja.

Artikeln ska täcka följande ämnen:

  1. Funktioner i WPF Barcode Generator
  2. C# Barcode Generator API
  3. Steg för att skapa WPF streckkodsgenerator
  4. Generera streckkod med ytterligare alternativ
  5. Demo WPF streckkodsgenerator
  6. Ladda ner källkod

Funktioner i WPF Barcode Generator

Vår WPF streckkodsgenerator kommer att ha följande funktioner.

  1. Generera följande typer av streckkodssymboler:
    • Kod128
    • Kod11
    • Kod39
    • QR
    • Datamatris
    • EAN13
    • EAN8
    • ITF14
    • PDF417
  2. Spara den genererade streckkodsbilden i följande format:
  3. Förhandsgranska den genererade streckkodsbilden.

C# Barcode Generator API

Vi kommer att använda Aspose.BarCode for .NET API för att generera streckkodsbilder och förhandsgranska dem i WPF-applikationen. Det är ett funktionsrikt API som låter dig generera, skanna och läsa ett brett utbud av streckkodstyper. Dessutom tillåter det att manipulera utseendet på de genererade streckkoderna som bakgrundsfärg, streckfärg, rotationsvinkel, x-dimension, bildkvalitet, upplösning, bildtexter, storlek och mycket mer.

Steg för att skapa WPF streckkodsgenerator

Vi kan generera och visa en streckkodsbild i WPF-applikationen genom att följa stegen nedan:

  • Skapa först ett nytt projekt och välj projektmallen WPF Application.
  • Ange sedan namnet på projektet, t.ex. “BarcodeGen”.

  • Välj sedan .NET-ramverket och välj sedan att skapa.

  • Öppna sedan NuGet Package Manager och installera paketet Aspose.BarCode for .NET.

Installera Aspose.BarCode för .NET

Installera Aspose.BarCode för .NET

  • Lägg sedan till en ny klass Barcode.cs för att definiera streckkoden.
public class Barcode
{
    public string? Text { get; set; }

    public BaseEncodeType? BarcodeType { get; set; }

    public BarCodeImageFormat ImageType { get; set; }
}
  • Öppna sedan MainWindow.xaml och lägg till de nödvändiga kontrollerna som visas nedan:
Lägg till de nödvändiga kontrollerna

Lägg till de nödvändiga kontrollerna

Du kan också ersätta innehållet i MainWindow.xaml med följande skript.

<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>
  • Öppna sedan klassen MainWindow.xaml.cs och lägg till btnGenerateClick-händelsen för att hantera klickåtgärden för knappen Generate Barcode.
private void btnGenerate_Click(object sender, RoutedEventArgs e)
{
    // Ställ in standard som Png
    var imageType = "Png";

    // Få det användarvalda bildformatet
    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();
    }

    // Hämta bildformat från enum
    var imageFormat = (BarCodeImageFormat)Enum.Parse(typeof(BarCodeImageFormat), imageType.ToString());

    // Ställ in standard som Code128
    var encodeType = EncodeTypes.Code128;

    // Få den användarvalda streckkodstypen
    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;
        }
    }

    // Initiera streckkodsobjekt
    Barcode barcode = new Barcode();
    barcode.Text = tbCodeText.Text;
    barcode.BarcodeType = encodeType;
    barcode.ImageType = imageFormat;

    try
    {
        string imagePath = "";

        if (cbGenerateWithOptions.IsChecked == true)
        {
            // Generera streckkod med ytterligare alternativ och få bildsökvägen
            imagePath = GenerateBarcodeWithOptions(barcode);
        }
        else
        {
            // Generera streckkoder och få bildsökväg
            imagePath = GenerateBarcode(barcode);
        }

        // Visa bilden
        Uri fileUri = new Uri(Path.GetFullPath(imagePath));
        imgDynamic.Source = new BitmapImage(fileUri);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
  • Lägg sedan till en funktion för att generera en streckkod.
private string GenerateBarcode(Barcode barcode)
{
    // Bildväg
    string imagePath = comboBarcodeType.Text + "." + barcode.ImageType;

    // Initiera streckkodsgeneratorn
    BarcodeGenerator generator = new BarcodeGenerator(barcode.BarcodeType, barcode.Text);

    // Spara bilden
    generator.Save(imagePath, barcode.ImageType);

    return imagePath;
}
  • Slutligen, kör programmet.

Generera streckkoder med ytterligare alternativ

Vi kan också generera streckkoder med ytterligare alternativ specifika för streckkodstyper. I WPF streckkodsgeneratorn har vi lagt till en kryssruta för att generera en streckkod med alternativ. Den kommer att anropa följande funktion och specificera ytterligare alternativ för olika streckkodstyper.

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

    // Initiera streckkodsgeneratorn
    BarcodeGenerator generator = new BarcodeGenerator(barcode.BarcodeType, barcode.Text);

    if(barcode.BarcodeType == EncodeTypes.QR)
    {
        generator.Parameters.Barcode.XDimension.Pixels = 4;
        //ställ in automatisk version
        generator.Parameters.Barcode.QR.QrVersion = QRVersion.Auto;
        //Ställ in automatisk QR-kodningstyp
        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)
    {
        //ställ in DataMatrix ECC till 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;
        //ställ in BarHeight 40
        generator.Parameters.Barcode.BarHeight.Pixels = 40;
    }

    // Spara bilden
    generator.Save(imagePath, barcode.ImageType);

    return imagePath;
}

Du kan läsa mer om Generationsspecifikationer för streckkodstyper i dokumentationen.

Demo WPF streckkodsgenerator

Följande är en demonstration av WPF Barcode Generator-applikationen som vi just har skapat.

Demo WPF streckkodsgenerator

Demo WPF streckkodsgenerator

Ladda ner källkod

Du kan ladda ner den fullständiga källkoden för WPF Barcode Generator-applikationen från GitHub.

Skaffa en gratis licens

Du kan få en gratis tillfällig licens för att prova biblioteket utan utvärderingsbegränsningar.

Slutsats

I den här artikeln har vi lärt oss hur man genererar olika typer av streckkoder i en WPF-applikation. Vi har också sett hur man förhandsgranskar den genererade streckkodsbilden programmatiskt. Dessutom kan du lära dig mer om Aspose.BarCode för .NET API med hjälp av dokumentationen. I händelse av oklarheter, var god kontakta oss på vårt forum.

Se även