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).














