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:
Usando a API MessagingToolkit.QRCode
Usando a API ZXing.net
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:
1 PictureBox - (para exibir a imagem): name = picQRCode e SizeMode=StretchImage
1 Label
1 TextBox - name = txtTexto
2 Label
2 TextBox : name = txtAltura e txtLargura
1 Button - name = btnGerarQRCode
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;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 |
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 :
1 Label
1 TextBox - name = txtDados
1 Button - name = btnGerarQRCode
1 PictureBox - name = picQrCode SizeMode= StretchImage
Disponha os controles conforme o leiaute da figura abaixo:
Defina o seguintes namespaces no formulário:
using
MessagingToolkit.QRCode.Codec;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
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: