Um código de barras contém informações sobre um produto ou uma empresa, apresentadas visualmente em um formato legível por máquina. Os códigos de barras são amplamente utilizados para rastrear remessas e gerenciamento de estoque. Podemos gerar facilmente vários tipos de códigos de barras em aplicativos WPF. Neste artigo, aprenderemos como gerar e exibir uma imagem de código de barras no aplicativo WPF. Após seguir os passos mencionados, teremos nosso próprio WPF Barcode Generator em C#. Então vamos começar.
O artigo deve abordar os seguintes tópicos:
- Recursos do WPF Barcode Generator
- API do gerador de código de barras C#
- Etapas para criar um gerador de código de barras WPF
- Gerar código de barras com opções adicionais
- Gerador de código de barras WPF de demonstração
- Baixar código-fonte
Recursos do gerador de código de barras WPF
Nosso gerador de código de barras WPF terá os seguintes recursos.
- Gere os seguintes tipos de simbologias de código de barras:
- Código 128
- Código 11
- Código 39
- QR
- Matriz de dados
- EAN13
- EAN8
- ITF14
- PDF417
- Salve a imagem de código de barras gerada nos seguintes formatos:
- Visualize a imagem do código de barras gerada.
API do gerador de código de barras C#
Usaremos a API Aspose.BarCode for .NET para gerar imagens de código de barras e visualizá-las no aplicativo WPF. É uma API rica em recursos que permite gerar, digitalizar e ler uma ampla variedade de tipos de código de barras. Além disso, permite manipular a aparência dos códigos de barras gerados, como cor de fundo, cor da barra, ângulo de rotação, dimensão x, qualidade da imagem, resolução, legendas, tamanho e muito mais.
Etapas para criar o gerador de código de barras WPF
Podemos gerar e exibir uma imagem de código de barras no aplicativo WPF seguindo as etapas abaixo:
- Em primeiro lugar, crie um novo projeto e selecione o modelo de projeto WPF Application.
Em seguida, digite o nome do projeto, por exemplo, “BarcodeGen”.
Em seguida, selecione a estrutura .NET e escolha criar.
Em seguida, abra o Gerenciador de Pacotes NuGet e instale o pacote Aspose.BarCode for .NET.
- Em seguida, adicione uma nova classe Barcode.cs para definir o código de barras.
public class Barcode
{
public string? Text { get; set; }
public BaseEncodeType? BarcodeType { get; set; }
public BarCodeImageFormat ImageType { get; set; }
}
- Em seguida, abra o MainWindow.xaml e adicione os controles necessários conforme mostrado abaixo:
Você também pode substituir o conteúdo de MainWindow.xaml pelo script a seguir.
<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>
- Em seguida, abra a classe MainWindow.xaml.cs e adicione o evento btnGenerateClick para manipular a ação de clique para o botão Gerar código de barras.
private void btnGenerate_Click(object sender, RoutedEventArgs e)
{
// Definir padrão como png
var imageType = "Png";
// Obtenha o formato de imagem selecionado pelo usuário
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();
}
// Obter formato de imagem de enum
var imageFormat = (BarCodeImageFormat)Enum.Parse(typeof(BarCodeImageFormat), imageType.ToString());
// Definir padrão como Código128
var encodeType = EncodeTypes.Code128;
// Obter o tipo de código de barras selecionado pelo usuário
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;
}
}
// Inicializar objeto de código de barras
Barcode barcode = new Barcode();
barcode.Text = tbCodeText.Text;
barcode.BarcodeType = encodeType;
barcode.ImageType = imageFormat;
try
{
string imagePath = "";
if (cbGenerateWithOptions.IsChecked == true)
{
// Gere código de barras com opções adicionais e obtenha o caminho da imagem
imagePath = GenerateBarcodeWithOptions(barcode);
}
else
{
// Gerar código de barras e obter o caminho da imagem
imagePath = GenerateBarcode(barcode);
}
// Exibir a imagem
Uri fileUri = new Uri(Path.GetFullPath(imagePath));
imgDynamic.Source = new BitmapImage(fileUri);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
- Depois disso, adicione uma função para gerar um código de barras.
private string GenerateBarcode(Barcode barcode)
{
// Caminho da imagem
string imagePath = comboBarcodeType.Text + "." + barcode.ImageType;
// Iniciar gerador de código de barras
BarcodeGenerator generator = new BarcodeGenerator(barcode.BarcodeType, barcode.Text);
// Salve a imagem
generator.Save(imagePath, barcode.ImageType);
return imagePath;
}
- Por fim, execute o aplicativo.
Gerar código de barras com opções adicionais
Também podemos gerar códigos de barras com opções adicionais específicas para tipos de código de barras. No gerador de código de barras WPF, adicionamos uma caixa de seleção para gerar um código de barras com opções. Ele chamará a seguinte função especificando opções adicionais para diferentes tipos de código de barras.
private string GenerateBarcodeWithOptions(Barcode barcode)
{
// Caminho da imagem
string imagePath = comboBarcodeType.Text + "." + barcode.ImageType;
// Iniciar gerador de código de barras
BarcodeGenerator generator = new BarcodeGenerator(barcode.BarcodeType, barcode.Text);
if(barcode.BarcodeType == EncodeTypes.QR)
{
generator.Parameters.Barcode.XDimension.Pixels = 4;
//definir versão automática
generator.Parameters.Barcode.QR.QrVersion = QRVersion.Auto;
//Definir o tipo de codificação QR automática
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)
{
//definir DataMatrix ECC para 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;
//definir BarHeight 40
generator.Parameters.Barcode.BarHeight.Pixels = 40;
}
// Salve a imagem
generator.Save(imagePath, barcode.ImageType);
return imagePath;
}
Você pode ler mais sobre Especificações de geração para tipos de código de barras na documentação.
Gerador de código de barras WPF de demonstração
A seguir está a demonstração do aplicativo WPF Barcode Generator que acabamos de criar.
Baixar código fonte
Você pode baixar o código-fonte completo do aplicativo WPF Barcode Generator de GitHub.
Obtenha uma licença gratuita
Você pode obter uma licença temporária gratuita para experimentar a biblioteca sem limitações de avaliação.
Conclusão
Neste artigo, aprendemos como gerar vários tipos de códigos de barras em um aplicativo WPF. Também vimos como visualizar a imagem de código de barras gerada programaticamente. Além disso, você pode aprender mais sobre Aspose.BarCode para .NET API usando a documentação. Em caso de qualquer ambiguidade, não hesite em contactar-nos no nosso fórum.