Generování a zobrazení obrázku čárového kódu ve WPF

Čárový kód obsahuje informace o produktu nebo společnosti, vizuálně znázorněné ve strojově čitelné podobě. Čárové kódy se široce používají ke sledování zásilek a řízení zásob. V aplikacích WPF můžeme snadno generovat různé typy čárových kódů. V tomto článku se naučíme, jak vygenerovat a zobrazit obrázek čárového kódu v aplikaci WPF. Po provedení uvedených kroků budeme mít vlastní generátor čárových kódů WPF v C#. Takže začneme.

Článek se bude týkat následujících témat:

  1. Funkce generátoru čárových kódů WPF
  2. C# Barcode Generator API
  3. Kroky k vytvoření generátoru čárových kódů WPF
  4. Generovat čárový kód s dalšími možnostmi
  5. Ukázka generátoru čárových kódů WPF
  6. Stáhnout zdrojový kód

Funkce generátoru čárových kódů WPF

Náš generátor čárových kódů WPF bude mít následující funkce.

  1. Vygenerujte následující typy symbolik čárových kódů:
    • Kód128
    • Kód11
    • Kód39
    • QR
    • Datamatrix
    • EAN13
    • EAN8
    • ITF14
    • PDF417
  2. Uložte vygenerovaný obrázek čárového kódu v následujících formátech:
  3. Náhled vygenerovaného obrázku čárového kódu.

C# Barcode Generator API

Ke generování obrázků čárových kódů a jejich náhledu v aplikaci WPF budeme používat Aspose.BarCode for .NET API. Jedná se o funkčně bohaté API, které umožňuje generovat, skenovat a číst širokou škálu typů čárových kódů. Navíc umožňuje manipulovat se vzhledem generovaných čárových kódů, jako je barva pozadí, barva pruhu, úhel otočení, rozměr x, kvalita obrazu, rozlišení, popisky, velikost a mnoho dalšího.

Kroky k vytvoření generátoru čárových kódů WPF

Můžeme vygenerovat a zobrazit obrázek čárového kódu v aplikaci WPF podle následujících kroků:

  • Nejprve vytvořte nový projekt a vyberte šablonu projektu aplikace WPF.
  • Dále zadejte název projektu, např. “BarcodeGen”.

  • Poté vyberte .NET framework a poté zvolte vytvořit.

  • Dále otevřete NuGet Package Manager a nainstalujte balíček Aspose.BarCode for .NET.

Nainstalujte Aspose.BarCode pro .NET

Nainstalujte Aspose.BarCode pro .NET

  • Poté přidejte novou třídu Barcode.cs pro definování čárového kódu.
public class Barcode
{
    public string? Text { get; set; }

    public BaseEncodeType? BarcodeType { get; set; }

    public BarCodeImageFormat ImageType { get; set; }
}
  • Dále otevřete MainWindow.xaml a přidejte požadované ovládací prvky, jak je znázorněno níže:
Přidejte požadované ovládací prvky

Přidejte požadované ovládací prvky

Můžete také nahradit obsah MainWindow.xaml následujícím skriptem.

<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>
  • Poté otevřete třídu MainWindow.xaml.cs a přidejte událost btnGenerateClick pro zpracování akce kliknutí pro tlačítko Generate Barcode.
private void btnGenerate_Click(object sender, RoutedEventArgs e)
{
    // Nastavit výchozí jako Png
    var imageType = "Png";

    // Získejte uživatelem vybraný formát obrázku
    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();
    }

    // Získejte formát obrázku z enum
    var imageFormat = (BarCodeImageFormat)Enum.Parse(typeof(BarCodeImageFormat), imageType.ToString());

    // Výchozí nastavení je Code128
    var encodeType = EncodeTypes.Code128;

    // Získejte uživatelem vybraný typ čárového kódu
    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;
        }
    }

    // Inicializovat objekt čárového kódu
    Barcode barcode = new Barcode();
    barcode.Text = tbCodeText.Text;
    barcode.BarcodeType = encodeType;
    barcode.ImageType = imageFormat;

    try
    {
        string imagePath = "";

        if (cbGenerateWithOptions.IsChecked == true)
        {
            // Vygenerujte čárový kód s dalšími možnostmi a získejte cestu obrázku
            imagePath = GenerateBarcodeWithOptions(barcode);
        }
        else
        {
            // Vygenerujte čárový kód a získejte cestu k obrázku
            imagePath = GenerateBarcode(barcode);
        }

        // Zobrazte obrázek
        Uri fileUri = new Uri(Path.GetFullPath(imagePath));
        imgDynamic.Source = new BitmapImage(fileUri);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
  • Poté přidejte funkci pro generování čárového kódu.
private string GenerateBarcode(Barcode barcode)
{
    // Cesta obrázku
    string imagePath = comboBarcodeType.Text + "." + barcode.ImageType;

    // Spusťte generátor čárových kódů
    BarcodeGenerator generator = new BarcodeGenerator(barcode.BarcodeType, barcode.Text);

    // Uložte obrázek
    generator.Save(imagePath, barcode.ImageType);

    return imagePath;
}
  • Nakonec spusťte aplikaci.

Generování čárového kódu s dalšími možnostmi

Můžeme také generovat čárové kódy s dalšími možnostmi specifickými pro typy čárových kódů. V generátoru čárových kódů WPF jsme přidali zaškrtávací políčko pro generování čárového kódu s možnostmi. Zavolá následující funkci specifikující další možnosti pro různé typy čárových kódů.

private string GenerateBarcodeWithOptions(Barcode barcode)
{
    // Cesta obrázku
    string imagePath = comboBarcodeType.Text + "." + barcode.ImageType;

    // Spusťte generátor čárových kódů
    BarcodeGenerator generator = new BarcodeGenerator(barcode.BarcodeType, barcode.Text);

    if(barcode.BarcodeType == EncodeTypes.QR)
    {
        generator.Parameters.Barcode.XDimension.Pixels = 4;
        //nastavit automatickou verzi
        generator.Parameters.Barcode.QR.QrVersion = QRVersion.Auto;
        //Nastavte typ automatického kódování QR
        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)
    {
        //nastavte DataMatrix ECC na 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;
        //nastavit BarHeight 40
        generator.Parameters.Barcode.BarHeight.Pixels = 40;
    }

    // Uložte obrázek
    generator.Save(imagePath, barcode.ImageType);

    return imagePath;
}

Více o Generační specifika pro typy čárových kódů si můžete přečíst v dokumentaci.

Demo generátor čárových kódů WPF

Následuje ukázka aplikace WPF Barcode Generator, kterou jsme právě vytvořili.

Demo generátor čárových kódů WPF

Demo generátor čárových kódů WPF

Stáhněte si zdrojový kód

Kompletní zdrojový kód aplikace WPF Barcode Generator si můžete stáhnout z GitHub.

Získejte bezplatnou licenci

Můžete získat bezplatnou dočasnou licenci a vyzkoušet knihovnu bez omezení hodnocení.

Závěr

V tomto článku jsme se naučili generovat různé typy čárových kódů v aplikaci WPF. Také jsme viděli, jak programově zobrazit náhled vygenerovaného obrázku čárového kódu. Kromě toho se můžete dozvědět více o Aspose.BarCode for .NET API pomocí dokumentace. V případě jakýchkoliv nejasností nás neváhejte kontaktovat na našem fóru.

Viz také