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:
- Funktioner i WPF Barcode Generator
- C# Barcode Generator API
- Steg för att skapa WPF streckkodsgenerator
- Generera streckkod med ytterligare alternativ
- Demo WPF streckkodsgenerator
- Ladda ner källkod
Funktioner i WPF Barcode Generator
Vår WPF streckkodsgenerator kommer att ha följande funktioner.
- Generera följande typer av streckkodssymboler:
- Kod128
- Kod11
- Kod39
- QR
- Datamatris
- EAN13
- EAN8
- ITF14
- PDF417
- Spara den genererade streckkodsbilden i följande format:
- 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.
- 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:
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.
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.