C# - Gerando códigos QR (ZXing e MessagingToolKit.QRCode)


 Hoje vamos aprender como gerar QR Code, ou códigos QR, usando a linguagem C# em uma aplicação Windows Forms.

 

Apenas para lembrar, o QR Code é um código de barras bidimensional que pode ser escaneado usando a maioria dos celulares modernos equipados com câmera.

 

Esse código é convertido numa URL, mas também pode conter um texto, um número de telefone, uma localização, um e-mail, um contato, um SMS, etc.

 

Gerar códigos QR na plataforma .NET, quer seja usando a linguagem VB .NET ou C#, não é problema, pois existem dezenas de APIs que oferecem esse serviço. Talvez o problema seja saber qual delas usar.

 

Neste artigo eu vou mostrar como gerar códigos QR usando duas APIs diferentes:

Recursos Usados:

1- Gerando QR Codes com a API ZXing.Net

A primeira coisa que vamos fazer é criar um novo projeto no Visual Studio Express 2013 for windows desktop com o nome de  Gerando_QRCode, usando o template Windows Forms Application e a linguagem C#:

Será criado um projeto com um formulário form1.cs. Vamos incluir a partir da ToolBox os seguintes controles no formulário:

Disponha os controles conforme o leiaute da figura abaixo:

 

 

Agora temos que incluir uma referência à biblioteca ZXing.NET, e vamos fazer isso via Nuget.

 

Clique no menu TOOLS -> Nuget Package Manager -> Package Manager Console;

 

 

A seguir digite no Console a linha de comando : Install-Package ZXing.Net

 

 

Pronto ! Já temos a biblioteca instalada e podemos agora criar o QR Code.

 

Defina o seguintes namespaces no formulário:

using System;
using
System.Drawing;
using
System.Windows.Forms;

No evento Click do botão de comando - Gerar QRCode - inclua o código a seguir:

 

private void btnGerarQRCode_Click(object sender, EventArgs e)
  {
            if (txtTexto.Text == string.Empty || txtLargura.Text == string.Empty && txtLargura.Text == string.Empty)
            {
                MessageBox.Show("Informações inválidas. Complete as informações para gerar o QRCode...");
                txtTexto.Focus();
                return;
            }
            try
            {
                int largura = Convert.ToInt32(txtLargura.Text);
                int altura = Convert.ToInt32(txtAltura.Text);
                picQRCode.Image = GerarQRCode(largura, altura, txtTexto.Text);
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message,"Erro",MessageBoxButtons.OK,MessageBoxIcon.Error);
            }
 }

 

Este código valida as informações postadas pelo usuário e chama o método GerarQRCode() passando a largura, altura e o texto.

 

O código do método GerarQRCode() é dado a seguir:

 

  public Bitmap GerarQRCode(int width, int height, string text)
  {
            try
            {
                var bw = new ZXing.BarcodeWriter();
                var encOptions = new ZXing.Common.EncodingOptions() { Width = width, Height = height, Margin = 0 };
                bw.Options = encOptions;
                bw.Format = ZXing.BarcodeFormat.QR_CODE;
                var resultado = new Bitmap(bw.Write(text));
                return resultado;
            }
            catch
            {
                throw;
            }
 }

 

Este código usa a biblioteca ZXing para gerar o QR Code e retorna uma imagem que exibimos no controle PictureBox.

 

Executando o projeto obtemos o seguinte resultado:

 

 

2- Gerando QR Codes com a API MessagingToolKit.QRCode

Vamos agora incluir um novo projeto na nossa solução clicando no menu FILE -> Add -> New Project;

Selecione o template Windows Forms Application e a linguagem C# e Informe o nome Gerando_QRCode2:

Agora temos que incluir uma referência à biblioteca MessagingToolkit.QRCode em nosso projeto, e vamos fazer isso via Nuget.

 

Clique no menu TOOLS -> Nuget Package Manager -> Package Manager Console;

 

 

A seguir digite no Console a linha de comando : Install-Package MessagingToolkit.QRCode -ProjectName Gerando_QRCode_2

 

 

Observe que usamos o parâmetro -ProjectName informando o nome do projeto no qual desejamos instalar o pacote.

 

Agora vamos incluir no formulário form1.cs os seguintes controles :

Disponha os controles conforme o leiaute da figura abaixo:

 

 

Defina o seguintes namespaces no formulário:

using MessagingToolkit.QRCode.Codec;
using
System;
using
System.Drawing;
using
System.Windows.Forms;

No evento Click do botão de comando - Gerar QRCode - inclua o código a seguir:

 

   private void btnGerarQRCode_Click(object sender, EventArgs e)
    {
            try
            {
                QRCodeEncoder qrCodecEncoder = new QRCodeEncoder();
                qrCodecEncoder.QRCodeBackgroundColor = System.Drawing.Color.White;
                qrCodecEncoder.QRCodeForegroundColor = System.Drawing.Color.Black;
                qrCodecEncoder.CharacterSet = "UTF-8";
                qrCodecEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
                qrCodecEncoder.QRCodeScale = 6;
                qrCodecEncoder.QRCodeVersion = 0;
                qrCodecEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.Q;
                Image imageQRCode;
                //string a ser gerada
                String dados = txtDados.Text;
                imageQRCode = qrCodecEncoder.Encode(dados);
                picQrCode.Image = imageQRCode;
            }
            catch(Exception ex)
            {
                MessageBox.Show("Erro : " + ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
 }

 

Para executar este projeto clique com o botão direito sobre o nome do projeto e selecione Set as Startup Project;

 

Executando o projeto iremos obter o resultado abaixo:

 

 

Pegue os dois projetos completos aqui:  Gerando_QRCode.zip ( sem as referências)

Bendito seja o Deus e Pai de nosso Senhor Jesus Cristo que, segundo a sua grande misericórdia, nos gerou de novo para uma viva esperança, pela ressurreição de Jesus Cristo dentre os mortos,
Para uma herança incorruptível, incontaminável, e que não se pode murchar, guardada nos céus para vós,
1 Pedro 1:3,4

 

Bendito seja o Deus e Pai de nosso Senhor Jesus Cristo que, segundo a sua grande misericórdia, nos gerou de novo para uma viva esperança, pela ressurreição de Jesus Cristo dentre os mortos,
Para uma herança incorruptível, incontaminável, e que não se pode murchar, guardada nos céus para vós,

1 Pedro 1:3,4

 

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti