[Windows Phone] Generar códigos de barras

Introducción

Un código de barras es una forma de representar
graficamente un conjunto de información de modo que pueda ser facilmente
leida por una máquina.

En nuestro día a día estamos acostumbrados
a ver códigos de barras por todos lados, en el último libro que leiste,
en ese CD de música que te asombro e incluso en el cartón de leche de
tu desayuno. En distintos formatos y tipos pero sin duda, son un factor
importante. El formato más comun es un conjunto de barras verticales
paralelas entre si utilizadas para identificar un producto en concreto. A
este conjunto de códigos de barras con líneas verticales se les conoce
como 1D (1 Dimensión). Tambien tenemos otro conjunto de códigos basados
en patrones geométricos diseñados para almacenar más información. Son
los conocidos como 2D (2 Dimensiones) donde el representante más
conocido es el código QR.

En este artículo vamos a aprender como generar códigos QR desde nuestra aplicación Windows Phone.

¿Te apuntas?

Windows Phone y los códigos de barras

Desde Windows Phone 7
se pueden leer un conjunto de los códigos de barras más importantes como
EAN-13 o los códigos QR directamente con la aplicación de búsqueda Bing
Vision sin la necesidad de instalar ningun App para ello.

ZXing.Net

Para generar códigos de barras desde nuestra aplicación Windows Phone utilizaremos la librería ZXing.Net. Esta librería es un port de la librería open spurce ZXing.

Generando códigos de barras

Como
solemos hacer, vamos a crear una Aplicación de ejemplo para aprender
como generar códigos de barras utilizando la librería ZXing.Net desde
Windows Phone:

Creamos un proyecto desde la plantilla más básica para concentrar
nuestra atención en la librería ZXing.NET que nos ocupa en esta entrada.

Lo
primero que debemos hacer para poder trabajar con la librería es…
obtener la librería. Para ello, en el Explorador de soluciones, hacemos
clic derecho sobre las referencias del proyecto y elegimos la opción
Manage NuGet Packages…

En la ventana que nos aparece buscaremos por la palabra «ZXing» e instalamos la opción  llamada «ZXing.Net» de las disponibles:

NOTA: También podemos instalar la librería con el Package Manager Console laejecutando el siguiente comando: Install-Package ZXing.Net

Ya
estamos preparados para trabajar con la librería. Para ello, vamos a
añadir un simple botón para que al pulsarlo se genere un código de
barras:

<Button x:Name="BtnGenerate" Content="Generar"/>

Añadimos el evento clic del botón:

<Button x:Name="BtnGenerate" Content="Generar" Click="BtnGenerate_Click" />

Y en el code-behind:

private void BtnGenerate_Click(object sender, RoutedEventArgs e)
{

}

Para generar códigos de barras, lo primero que haremos será importar el namespace:

using ZXing;

En el evento clic de nuestro botón utilizaremos la clase BarcodeWriter que será la encargada de generar el código de barras. Las propiedades fundamentales del BarcodeWriter son:

  • Format: Propiedad tipo enumeración  del tipo BarcodeFormat.
    Se pueden generar códigos de barras con los formatos UPC-A, EAN-8,
    EAN-13, Code 39, Code 128, ITF, Codabar, Plessey, MSI, QR Code, PDF-417,
    Aztec y Data Matrix.
  • Renderer: Podemos crear un WriteableBitmapRenderer o un SvgRenderer
    dependiendo del formato con el que queramos crear el código. Nos
    permite personalizar información del código como el color de fondo,
    fuente a utilizar, tamaño de la fuente, etc.
  • Options: Nos permite definir información básica del código como el tamaño, márgenes, etc.

Crearemos un método que haga uso de la clase BarcodeWriter:

private static WriteableBitmap GenerateQrCode(string content)
{
var writer = new BarcodeWriter
{
Renderer = new ZXing.Rendering.WriteableBitmapRenderer
{
Foreground = System.Windows.Media.Color.FromArgb(255, 0, 0, 0),
},
Format = BarcodeFormat.QR_CODE,
Options = { Height = 400, Width = 400 }
};

var barcodeImage = writer.Write(content);

return barcodeImage;
}

En el método utilizamos la clase BarcodeWriter para crear un código
QR de color negro, de 400×400 px con el contenido pasado como parámetro
al método. Fácil, ¿verdad?

Para concluir el ejemplo, solo nos
falta devolver el resultado a pantalla. Añadiremos en la interfaz un
control de tipo Image donde mostrar el código:

<Image x:Name="ImgQrCode" />

Por último, en el clic del botón, estableceremos la propiedad Source de
la imagen al resultado que devuelve nuestro método anterior
GenerateQrCode.

ImgQrCode.Source = GenerateQrCode("@jsuarezruiz");

El resultado es el siguiente:

Podéis descargar el ejemplo a continuación:


Más información

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *