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: Visual Studio 2013 Express for windows desktop.
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; 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:
- 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; 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).