Criando códigos de barras com ou sem texto legível por humanos com o Xambarcode
Linhas paralelas com largura e espaçamento variados – elas estão praticamente em toda parte. Os códigos de barras têm uma longa história de se tornarem um padrão para atribuir dados a uma representação óptica e permitiram a identificação de uma ampla gama de mercadorias em lojas, contêineres e inúmeros outros itens, o que, por sua vez, simplificou vários processos da indústria.
Linhas paralelas com largura e espaçamento variados – elas estão praticamente em toda parte. Os códigos de barras têm uma longa história de se tornarem um padrão para atribuir dados a uma representação óptica e permitiram a identificação de uma ampla gama de mercadorias em lojas, contêineres e inúmeros outros itens, o que, por sua vez, simplificou vários processos da indústria.
Como os códigos de barras são tão populares e úteis, não é surpresa que você precise representar dados dessa maneira em um aplicativo e Infragistics pacotes XAML (NetAdvantage para WPF, Silverlight e Windows Phone) estejam equipados para ajudá-lo exatamente com isso. O XamBarcode é apenas a classe base e o nome comum de uma família de controles capazes de exibir dados como um gráfico com linhas e formas baseadas em vários padrões. Existem algumas simbologias, portanto, se você estiver interessado, pode ler extensivamente sobre elas em nossa documentação (essa é a página de ajuda Silverlight, mas os outros produtos também contêm as mesmas informações). Cada um deles se esforça para economizar o máximo de trabalho possível para o desenvolvedor – você não precisa conhecer as regras para criá-los e, na maioria dos casos, pode apenas fornecer os dados que deseja codificar e aproveitar. Além disso, cada controle lida com apenas uma simbologia, o que também torna a adição de códigos de barras em XAML muito mais simples (e é realmente simples, você verá abaixo).
Agora, existem alguns códigos especiais (como o código QR) que têm opções extras devido à sua estrutura não linear, mas a maioria dos tipos lineares, como os códigos Code 128 ou Ean/UPC, têm seus dados exibidos logo abaixo deles. Com a versão 12.1, há uma pequena atualização que permite ocultar isso junto com uma biblioteca de imagens CTP para facilitar a vida do 'código de barras'.
Texto legível por humanos
Essa parte é chamada muito apropriadamente de texto legível por humanos, pois o código de barras é legível por máquina e alguns padrões nos fornecem uma imagem amigável que ainda carrega significado sem um leitor de código de barras.

Embora tudo isso seja muito bom, pode haver casos em que você precise apenas do código de barras, casos em que não é necessário ou razoável ter esse texto. Uma nova propriedade foi adicionada recentemente aos controles que possuem tal para poder controlar se os dados devem estar visíveis ou desperdiçar sua tinta. Uma propriedade simples 'ShowText' agora está disponível para os seguintes códigos:
- Código 39
- Code 128
- Ean/UPC
- Intercalado 2 de 5
- GS1 DataBar
- Correio Real
É uma pequena mudança, mas pode muito bem ser impactante, então vamos ver como usá-la!
Adding Barcodes
Comece adicionando as referências necessárias – (a nomenclatura é idêntica entre as plataformas) Infragistics <plataforma>.v12.1.dll, Infragistics <plataforma>. DataVisualization.v12.1.dll, Infragistics <plataforma>. Controls.Barcodes.v12.1.dll. A configuração dos controles XamBarcode, o fornecimento de dados e o controle do texto legível por humanos podem ser feitos facilmente apenas em XAML por meio de associação. Por exemplo, vamos fazer com que nosso usuário insira os dados em um campo e dê a ele algum tipo de opção (botão de alternância, botões de opção, caixa de seleção, etc.) para vincular o "ShowText":
<TextBox x:Name="userInput"/> <ToggleButton x:Name="textToggle" IsChecked="True">show/hide text</ToggleButton>
Em seguida, adicione alguns controles Xam<code>Barcode à sua página:
xmlns:ig="http://schemas.infragistics.com/xaml"
<ig:XamCode39Barcode Data="{Binding Text, ElementName=userInput}" ShowText="{Binding IsChecked, ElementName=textToggle}" />
<ig:XamCode128Barcode Data="{Binding Text, ElementName=userInput}" ShowText="{Binding IsChecked, ElementName=textToggle}" Grid.Column="1"/>
<ig:XamEanUpcBarcode Data="{Binding Text, ElementName=userInput}" ShowText="{Binding IsChecked, ElementName=textToggle}" Grid.Column="2"/>
<ig:XamInterleaved2Of5Barcode Data="{Binding Text, ElementName=userInput}" ShowText="{Binding IsChecked, ElementName=textToggle}" Grid.Row="1" />
<ig:XamGs1DataBarBarcode Data="{Binding Text, ElementName=userInput}" ShowText="{Binding IsChecked, ElementName=textToggle}" Grid.Row="1" Grid.Column="1"/>
<ig:XamRoyalMailBarcode Data="{Binding Text, ElementName=userInput}" ShowText="{Binding IsChecked, ElementName=textToggle}" Grid.Row="1" Grid.Column="2"/>
Depois de algum arranjo e estilo, a demonstração pode ficar assim:

Existem alguns botões adicionais que adicionei e comentarei sobre eles abaixo, mas por enquanto estamos interessados no botão de alternância 'mostrar'ocultar' que, quando desmarcado, fará com que todos os códigos de barras percam seu texto:

Aproveitando ao máximo
Além de permitir que o usuário controle o que acontece com o texto, você também pode definir isso no código e existem algumas aplicações interessantes para isso também. O que você pode fazer é exibir códigos de barras para o usuário com seus dados legíveis e ocultá-los antes de imprimir ou vice-versa! Veja como isso ficaria em um aplicativo WPF (observe que temos um monte de códigos de barras, então apenas alternamos o botão de alternância para afetar todos eles, mas os controles de código de barras podem ser usados):
private void PrintButton_Click(object sender, RoutedEventArgs e)
{
//print document
PrintDialog printDialog = new PrintDialog();
if (printDialog.ShowDialog() == true)
{
//turn text off if it's visible
if (this.textToggle.IsChecked == true)
{
this.textToggle.IsChecked = false;
_changed = true;
}
//print
printGrid.Measure(new Size(printDialog.PrintableAreaWidth, printDialog.PrintableAreaHeight));
printGrid.Arrange(new Rect(10,10,printDialog.PrintableAreaWidth, printDialog.PrintableAreaHeight));
printDialog.PrintVisual(printGrid, "Barcodes Docs");
// set text back on if it was removed for printing
if (_changed)
{
this.textToggle.IsChecked = true;
_changed = false;
}
}
}
Além disso, o recurso CTP que mencionei que se destina a ajudar Silverlight aplicativos a codificar imagens - você também pode usá-lo! Deixe o usuário salvar uma imagem dos códigos de barras no aplicativo com ou sem o texto e você também pode controlar a qualidade da imagem:
using (Stream stream = saveDialog.OpenFile())
{
Infragistics.Imaging.JpegImageEncoder jpgEncoder = new Infragistics.Imaging.JpegImageEncoder();
List<EncodingProperty> qualityList = new List<EncodingProperty>();
qualityList.Add(new JpegQualityProperty() { Quality = 100 });
jpgEncoder.Encode(bitmap, qualityList, stream);
}
Conclusão
Não há dúvida de que os códigos de barras são úteis – eles podem ser embalados com dados, podem agilizar e organizar processos e estão em toda parte. Usando os controles de código de barras XAML, você pode integrar essa funcionalidade popular em seu aplicativo com grande facilidade. Agora você tem ainda mais controle sobre o visual dos códigos de barras lineares com texto legível por humanos – você pode mostrá-lo ou ocultá-lo para apresentá-lo corretamente ao usuário ou para imprimir ou salvar em uma imagem!
Você pode baixar as demonstrações mostradas acima paraSilverlighteWPF! Além disso, você pode ver todos os diferentes tipos de códigos em ação visitando nossoSilverlight Amostras Online! E você pode baixar os do WPF no link acima e encontrar as Windows Phone amostras no Mercado.
Siga-nos no Twitter@Infragistics e participe da competição noFacebook e não se esqueça de votar em nós no Code Project's Reader's Choice Awards!