Aplicativo Gerador de Código QR em C
Bem-vindo ao nosso guia sobre como criar códigos QR usando C#! Os códigos QR e as DLLs de código de barras .NET tornaram-se formas populares de compartilhar informações de maneira rápida e eficiente. Seja para desenvolver um aplicativo, gerenciar um site ou simplesmente encontrar uma maneira prática de compartilhar links, esses códigos podem ser incrivelmente úteis. Neste guia, demonstraremos como gerar códigos QR de forma eficiente usando o IronQR , garantindo que você possa gerar códigos QR personalizados para suas necessidades. Esta biblioteca facilita a criação de códigos QR para qualquer pessoa que trabalhe com C#, sem a necessidade de se aprofundar em lógica complexa. Vamos orientá-lo(a) em cada etapa, garantindo que você tenha tudo o que precisa para começar. Se você deseja adicionar a funcionalidade de geração de código QR ao seu aplicativo ou apenas tem curiosidade de saber como isso é feito, você está no lugar certo. Vamos começar.
Como criar um gerador de código QR em C#
- Criar um aplicativo Windows Forms no Visual Studio
- Instale a biblioteca QR usando o NuGet.
- Projete os elementos do formulário na interface do usuário.
- Escreva a lógica de geração de QR Code.
- Execute o aplicativo e comece a criar códigos QR.
Instalar a Biblioteca do Gerador de Código QR em C
!{--010011000100100101000010010100100100000101010010010110010101111101010011010101000100000101010010010101000101111101010001010010010010010010100000101001100010111110100001001001100010011110100001101001011--}
Antes de começarmos, precisamos instalar o pacote NuGet IronQR .
Install-Package IronQR
IronQR: Biblioteca QR em C
IronQR é uma biblioteca C# para códigos QR que permite integrar a funcionalidade de códigos QR em aplicações .NET . O IronQR oferece suporte a uma ampla variedade de versões do .NET e tipos de projeto, incluindo C#, VB .NET, F#, .NET Core, .NET Standard, .NET Framework e muito mais, garantindo compatibilidade com diversos ambientes de desenvolvimento, como Windows, Linux, macOS, iOS e Android.
O IronQR se destaca por seus recursos avançados, incluindo a capacidade de ler e gerar códigos QR , suporte a múltiplos formatos de imagem e opções de personalização como redimensionamento, estilização e adição de logotipos aos códigos QR.
Algumas características principais do IronQR
O IronQR amplia sua funcionalidade além da geração básica de códigos QR, oferecendo diversos recursos projetados para atender a uma ampla gama de tarefas relacionadas a códigos QR. Vamos analisar esses recursos e verificar seus exemplos de código, que você poderá integrar em qualquer tipo de modelo de aplicativo .NET, como um aplicativo de console.
Leia os códigos QR
O IronQR se destaca na decodificação de códigos QR, proporcionando aos usuários uma maneira simples de acessar as informações contidas neles. Você pode extrair dados de códigos QR de forma rápida e precisa, desde URLs simples até informações complexas incorporadas.
:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-1.cs
using IronQr;
using IronSoftware.Drawing;
using System;
using System.Collections.Generic;
IronQr.License.LicenseKey = "License-Key";
// Load the image file that contains the QR Code
var inputImage = AnyBitmap.FromFile("QRCode.png");
// Prepare the image for QR code detection
QrImageInput qrInput = new QrImageInput(inputImage);
// Initialize the QR Code reader
QrReader qrReader = new QrReader();
// Execute QR Code reading on the provided image
IEnumerable<QrResult> qrResults = qrReader.Read(qrInput);
// Assuming you have the QR results in qrResults as before
foreach (var result in qrResults)
{
Console.WriteLine(result.Value); // Print the QR code content to the console
}
Imports IronQr
Imports IronSoftware.Drawing
Imports System
Imports System.Collections.Generic
IronQr.License.LicenseKey = "License-Key"
' Load the image file that contains the QR Code
Dim inputImage = AnyBitmap.FromFile("QRCode.png")
' Prepare the image for QR code detection
Dim qrInput As New QrImageInput(inputImage)
' Initialize the QR Code reader
Dim qrReader As New QrReader()
' Execute QR Code reading on the provided image
Dim qrResults As IEnumerable(Of QrResult) = qrReader.Read(qrInput)
' Assuming you have the QR results in qrResults as before
For Each result In qrResults
Console.WriteLine(result.Value) ' Print the QR code content to the console
Next result
O processo começa com a incorporação dos namespaces necessários: IronQR e IronSoftware.Drawing, com menção específica ao namespace Color do IronSoftware.Drawing para lidar com manipulações de imagem.
Antes de mergulhar no processo de leitura de código QR, é essencial ativar o software com sua chave de licença atribuindo-a a IronQr.License.LicenseKey. O código então procede a carregar a imagem do código QR a partir de um arquivo usando AnyBitmap.FromFile("QRCode.png").
Com a imagem carregada, o próximo passo envolve prepará-la para a detecção do código QR. Esta preparação é feita criando um objeto QrImageInput, que serve como um contêiner para a imagem.
O núcleo deste recurso reside na classe QrReader, que é instanciada e usada para realizar a operação de leitura do código QR. O leitor analisa a imagem preparada, procurando por quaisquer códigos QR que ela contenha. O resultado desta operação é uma coleção de objetos QrResult, cada um representando um código QR detectado dentro da imagem.
Para acessar e utilizar os dados codificados nos códigos QR, o código itera sobre a coleção de resultados usando um loop foreach. Cada objeto QrResult contém propriedades como o valor do código QR, que pode ser acessado e exibido.
Opções personalizadas do modo de leitura de QR Code
O IronQR oferece diferentes modos de leitura de códigos QR, tornando-o versátil para diversas necessidades.
- Modo de leitura mista : equilibra velocidade e precisão, útil para códigos QR que não sejam claros ou estejam parcialmente ocultos.
- Modo de leitura por aprendizado de máquina (ML) : Utiliza tecnologia avançada para ler códigos QR danificados ou de difícil leitura, ideal para cenários de detecção complexa.
- Modo de leitura básica : A maneira mais simples e rápida de obter códigos QR claros e diretos.
:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-2.cs
using IronQr;
using IronQr.Enum;
using IronSoftware.Drawing;
using System.Collections.Generic;
IronQr.License.LicenseKey = "License-Key";
// Load the image file that contains the QR Code
var inputImage = AnyBitmap.FromFile("QRCode.png");
QrImageInput mixedScanInput = new QrImageInput(inputImage, QrScanMode.OnlyDetectionModel);
IEnumerable<QrResult> mixedScanResults = new QrReader().Read(mixedScanInput);
QrImageInput mlScanInput = new QrImageInput(inputImage, QrScanMode.OnlyDetectionModel);
IEnumerable<QrResult> mlScanResults = new QrReader().Read(mlScanInput);
QrImageInput basicScanInput = new QrImageInput(inputImage, QrScanMode.OnlyBasicScan);
IEnumerable<QrResult> basicScanResults = new QrReader().Read(basicScanInput);
Imports IronQr
Imports IronQr.Enum
Imports IronSoftware.Drawing
Imports System.Collections.Generic
IronQr.License.LicenseKey = "License-Key"
' Load the image file that contains the QR Code
Dim inputImage = AnyBitmap.FromFile("QRCode.png")
Dim mixedScanInput As New QrImageInput(inputImage, QrScanMode.OnlyDetectionModel)
Dim mixedScanResults As IEnumerable(Of QrResult) = (New QrReader()).Read(mixedScanInput)
Dim mlScanInput As New QrImageInput(inputImage, QrScanMode.OnlyDetectionModel)
Dim mlScanResults As IEnumerable(Of QrResult) = (New QrReader()).Read(mlScanInput)
Dim basicScanInput As New QrImageInput(inputImage, QrScanMode.OnlyBasicScan)
Dim basicScanResults As IEnumerable(Of QrResult) = (New QrReader()).Read(basicScanInput)
Leia códigos QR avançados
Os recursos avançados de leitura de código QR do IronQR oferecem uma abordagem abrangente para a leitura e decodificação de códigos QR. Este conjunto de funcionalidades vai além da leitura básica, oferecendo um nível mais profundo de interação e extração de dados.
:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-3.cs
using IronQr;
using IronSoftware.Drawing;
using System;
using System.Collections.Generic;
IronQr.License.LicenseKey = "License-Key";
var imageToScan = AnyBitmap.FromFile("QRCode.png");
QrImageInput qrInput = new QrImageInput(imageToScan);
QrReader qrScanner = new QrReader();
IEnumerable<QrResult> scanResults = qrScanner.Read(qrInput);
foreach (QrResult qrResult in scanResults)
{
Console.WriteLine(qrResult.Value);
Console.WriteLine(qrResult.Url);
foreach (IronSoftware.Drawing.PointF coordinate in qrResult.Points)
{
Console.WriteLine($"{coordinate.X}, {coordinate.Y}");
}
}
Imports IronQr
Imports IronSoftware.Drawing
Imports System
Imports System.Collections.Generic
IronQr.License.LicenseKey = "License-Key"
Dim imageToScan = AnyBitmap.FromFile("QRCode.png")
Dim qrInput As New QrImageInput(imageToScan)
Dim qrScanner As New QrReader()
Dim scanResults As IEnumerable(Of QrResult) = qrScanner.Read(qrInput)
For Each qrResult As QrResult In scanResults
Console.WriteLine(qrResult.Value)
Console.WriteLine(qrResult.Url)
For Each coordinate As IronSoftware.Drawing.PointF In qrResult.Points
Console.WriteLine($"{coordinate.X}, {coordinate.Y}")
Next coordinate
Next qrResult
Para criar um gerador de código QR usando a biblioteca IronQR em uma aplicação C#, siga estes passos cuidadosamente. Este guia irá orientá-lo na configuração de um aplicativo Windows Forms, na instalação da biblioteca IronQR , na escrita do código para gerar um código QR e na compreensão da saída.
Passo 1: Criar um aplicativo Windows no Visual Studio
- Comece executando o Visual Studio no seu computador.
- Clique no botão "Criar um novo projeto".
- Selecione Aplicativo do Windows Forms como o tipo de projeto. Certifique-se de escolher C# como linguagem.

- Insira um nome para o seu projeto e selecione o local para salvá-lo. Em seguida, na tela seguinte, selecione .NET Framework. Em seguida, clique em Criar .

Passo 2: Instale a biblioteca IronQR
Agora é hora de instalar a biblioteca IronQR no projeto. Você pode instalar a biblioteca IronQR por meio de diferentes métodos.
Instale usando o Gerenciador de Pacotes NuGet
- Clique com o botão direito do mouse no seu projeto no Solution Explorer e selecione Gerenciar Pacotes NuGet .
- Digite
IronQRna caixa de pesquisa e pressione Enter.
- Encontre o IronQR na lista e clique em Instalar ao lado dele.

Instale usando o Console do Gerenciador de Pacotes NuGet
- Acesse Ferramentas > Gerenciador de Pacotes NuGet > Console do Gerenciador de Pacotes .
- Digite
Install-Package IronQRe pressione Enter.
Etapa 3: Projetar o Frontend
3.1 Cabeçalho do título
Ao iniciar o aplicativo Gerador de Código QR, os usuários são imediatamente apresentados a um cabeçalho impactante intitulado "QR Generator IronQR", em uma fonte ousada e imponente.
3.2 Seção de Entrada
Entrada de texto para código QR
Os usuários podem inserir os dados que desejam codificar em seu código QR.
Seleção de logotipo
A área "Selecionar logotipo" permite uma camada adicional de personalização. Os usuários podem fazer o upload de um logotipo que será incorporado ao código QR.
Configuração de cores
Os botões de seleção de cores permitem que os usuários personalizem a paleta de cores do seu código QR.
3.3 Parâmetros de Estilização
Configurações de dimensão
Permite aos usuários especificar o tamanho total do código QR.
Configurações de margem
Permite aos usuários especificar o espaço em branco ao redor do código QR.
3.4 Pré-visualização da saída
Fornece uma pré-visualização em tempo real do código QR gerado.
3.5 Botões de ação
Gerar QR
Inicia o processo de criação do código QR.
Salvar código QR
Abre uma caixa de diálogo para salvar o código QR.
Redefinir formulário
Apaga todas as entradas e seleções anteriores.
Etapa 4: Escrever a lógica de backend
4.1 Configuração e Inicialização
Inclui namespaces necessários: IronQr e IronSoftware.Drawing.
:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-4.cs
using IronQr;
using IronSoftware.Drawing;
using Color = IronSoftware.Drawing.Color;
Imports IronQr
Imports IronSoftware.Drawing
Imports Color = IronSoftware.Drawing.Color
:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-5.cs
public QR_Generator()
{
InitializeComponent();
SetLicenseKey();
EnsureDirectoryExists(qrCodesDirectory);
}
'INSTANT VB WARNING: The following constructor is declared outside of its associated class:
'ORIGINAL LINE: public QR_Generator()
Public Sub New()
InitializeComponent()
SetLicenseKey()
EnsureDirectoryExists(qrCodesDirectory)
End Sub
4.2 Configuração da chave de licença
Aplica uma chave de licença válida para a biblioteca IronQR :
private static void SetLicenseKey() {
IronQr.License.LicenseKey = "YOUR_LICENSE_KEY";
}
private static void SetLicenseKey() {
IronQr.License.LicenseKey = "YOUR_LICENSE_KEY";
}
Private Shared Sub SetLicenseKey()
IronQr.License.LicenseKey = "YOUR_LICENSE_KEY"
End Sub
Substitua "YOUR_LICENSE_KEY" pela sua chave de licença real.
4.3 Gerenciamento de diretórios
Verifica ou cria os diretórios necessários.
:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-7.cs
private static void EnsureDirectoryExists(string path)
{
if (!System.IO.Directory.Exists(path))
{
System.IO.Directory.CreateDirectory(path);
}
}
Private Shared Sub EnsureDirectoryExists(ByVal path As String)
If Not System.IO.Directory.Exists(path) Then
System.IO.Directory.CreateDirectory(path)
End If
End Sub
O caminho para o diretório de códigos QR é definido no construtor da classe QR_Generator como qrCodesDirectory, que combina o caminho de inicialização do aplicativo com o nome da pasta "Códigos QR":
:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-8.cs
string qrCodesDirectory = System.IO.Path.Combine(Application.StartupPath, "QR Codes");
Dim qrCodesDirectory As String = System.IO.Path.Combine(Application.StartupPath, "QR Codes")
4.4 Seleção de Cores
Fornece componentes de diálogo coloridos e funções utilitárias.
:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-9.cs
private string ColorToHex(System.Drawing.Color color)
{
return $"#{color.R:X2}{color.G:X2}{color.B:X2}";
}
Private Function ColorToHex(ByVal color As System.Drawing.Color) As String
Return $"#{color.R:X2}{color.G:X2}{color.B:X2}"
End Function
O método UpdateColor pega a cor selecionada e a converte para o formato IronSoftware.Drawing.Color usando a string hexadecimal, e atualiza a cor de primeiro plano ou de fundo do código QR dependendo da seleção. A interface do usuário também é atualizada para refletir a nova escolha de cores:
:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-10.cs
private void UpdateColor(ref Color targetColor, Control display, bool isBackground)
{
if (select_color.ShowDialog() == DialogResult.OK)
{
var hexColor = ColorToHex(select_color.Color);
targetColor = new Color(hexColor);
display.BackColor = select_color.Color;
}
}
Private Sub UpdateColor(ByRef targetColor As Color, ByVal display As Control, ByVal isBackground As Boolean)
If select_color.ShowDialog() = DialogResult.OK Then
Dim hexColor = ColorToHex(select_color.Color)
targetColor = New Color(hexColor)
display.BackColor = select_color.Color
End If
End Sub
4.5 Adicionando um logotipo
Permite ao usuário selecionar um logotipo.
:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-11.cs
private void btn_logo_Click(object sender, EventArgs e)
{
if (select_logo.ShowDialog() == DialogResult.OK)
{
try
{
logoBmp = new AnyBitmap(select_logo.FileName);
selected_logo.Image = Image.FromFile(select_logo.FileName);
}
catch (Exception ex)
{
ShowError("An error occurred while loading the logo", ex.Message);
}
}
}
Private Sub btn_logo_Click(ByVal sender As Object, ByVal e As EventArgs)
If select_logo.ShowDialog() = DialogResult.OK Then
Try
logoBmp = New AnyBitmap(select_logo.FileName)
selected_logo.Image = Image.FromFile(select_logo.FileName)
Catch ex As Exception
ShowError("An error occurred while loading the logo", ex.Message)
End Try
End If
End Sub
4.6 Geração de código QR
Contém a lógica para gerar códigos QR com base nas informações inseridas pelo usuário.
:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-12.cs
private void btn_generate_Click(object sender, EventArgs e)
{
GenerateQRCode();
}
Private Sub btn_generate_Click(ByVal sender As Object, ByVal e As EventArgs)
GenerateQRCode()
End Sub
O objeto QrOptions define o nível de correção de erros, aumentando a resiliência do código QR a danos ou obscurecimentos. O método CreateStyleOptions gera um objeto QrStyleOptions, que inclui as configurações personalizadas do usuário, como cores, dimensões e o logotipo. Segue o método em detalhes:
:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-14.cs
private QrStyleOptions CreateStyleOptions()
{
return new QrStyleOptions
{
BackgroundColor = bgColor,
Color = color,
Dimensions = txt_dimension.Value > 0 ? Convert.ToInt32(txt_dimension.Value) : throw new ArgumentException("Please select valid dimensions!"),
Margins = Convert.ToInt32(txt_margin.Value),
Logo = logoBmp != null ? new QrLogo { Bitmap = logoBmp, Width = 50, Height = 50, CornerRadius = 5 } : null
};
}
Private Function CreateStyleOptions() As QrStyleOptions
'INSTANT VB TODO TASK: Throw expressions are not converted by Instant VB:
'ORIGINAL LINE: return new QrStyleOptions { BackgroundColor = bgColor, Color = color, Dimensions = txt_dimension.Value > 0 ? Convert.ToInt32(txt_dimension.Value) : throw new ArgumentException("Please select valid dimensions!"), Margins = Convert.ToInt32(txt_margin.Value), Logo = logoBmp != null ? new QrLogo { Bitmap = logoBmp, Width = 50, Height = 50, CornerRadius = 5 } : null };
Return New QrStyleOptions With {
.BackgroundColor = bgColor,
.Color = color,
.Dimensions = If(txt_dimension.Value > 0, Convert.ToInt32(txt_dimension.Value), throw New ArgumentException("Please select valid dimensions!")),
.Margins = Convert.ToInt32(txt_margin.Value),
.Logo = If(logoBmp IsNot Nothing, New QrLogo With {
.Bitmap = logoBmp,
.Width = 50,
.Height = 50,
.CornerRadius = 5
}, Nothing)
}
End Function
4.7 Salvando o código QR
Gerencia o processo de salvamento do código QR gerado.
:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-15.cs
private void btn_save_Click(object sender, EventArgs e)
{
SaveQRCode();
}
private void SaveQRCode()
{
if (pictureBox.Image == null)
{
MessageBox.Show("There is no QR code to save.", "Error");
return;
}
saveFileDialog.Filter = "PNG Files|*.png|JPEG Files|*.jpg";
saveFileDialog.Title = "Save QR Code";
saveFileDialog.FileName = "QRCode";
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
try
{
pictureBox.Image.Save(saveFileDialog.FileName, DetermineImageFormat(saveFileDialog.FileName));
MessageBox.Show("QR Code has been saved!", "Success");
}
catch (Exception ex)
{
ShowError("An error occurred while saving the QR code", ex.Message);
}
}
}
Private Sub btn_save_Click(ByVal sender As Object, ByVal e As EventArgs)
SaveQRCode()
End Sub
Private Sub SaveQRCode()
If pictureBox.Image Is Nothing Then
MessageBox.Show("There is no QR code to save.", "Error")
Return
End If
saveFileDialog.Filter = "PNG Files|*.png|JPEG Files|*.jpg"
saveFileDialog.Title = "Save QR Code"
saveFileDialog.FileName = "QRCode"
If saveFileDialog.ShowDialog() = DialogResult.OK Then
Try
pictureBox.Image.Save(saveFileDialog.FileName, DetermineImageFormat(saveFileDialog.FileName))
MessageBox.Show("QR Code has been saved!", "Success")
Catch ex As Exception
ShowError("An error occurred while saving the QR code", ex.Message)
End Try
End If
End Sub
:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-16.cs
private System.Drawing.Imaging.ImageFormat DetermineImageFormat(string filePath)
{
return System.IO.Path.GetExtension(filePath).ToLower() == ".jpg" ? System.Drawing.Imaging.ImageFormat.Jpeg : System.Drawing.Imaging.ImageFormat.Png;
}
Private Function DetermineImageFormat(ByVal filePath As String) As System.Drawing.Imaging.ImageFormat
Return If(System.IO.Path.GetExtension(filePath).ToLower() = ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg, System.Drawing.Imaging.ImageFormat.Png)
End Function
4.8 Reiniciando o Aplicativo
Limpa os dados inseridos pelo usuário e redefine o estado do formulário.
:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-17.cs
private void btn_reset_Click(object sender, EventArgs e)
{
ResetFields();
}
private void ResetFields()
{
txt_QR.Text = string.Empty;
txt_dimension.Value = 200;
txt_margin.Value = 0;
bgColor = Color.White;
color = Color.Black;
txt_selected_color.BackColor = System.Drawing.Color.White;
txt_selected_bgcolor.BackColor = System.Drawing.Color.Black;
logoBmp = null;
selected_logo.Image = null;
pictureBox.Image = null;
}
Private Sub btn_reset_Click(ByVal sender As Object, ByVal e As EventArgs)
ResetFields()
End Sub
Private Sub ResetFields()
txt_QR.Text = String.Empty
txt_dimension.Value = 200
txt_margin.Value = 0
bgColor = Color.White
color = Color.Black
txt_selected_color.BackColor = System.Drawing.Color.White
txt_selected_bgcolor.BackColor = System.Drawing.Color.Black
logoBmp = Nothing
selected_logo.Image = Nothing
pictureBox.Image = Nothing
End Sub
4.9 Tratamento de erros
Exibe mensagens de erro para os usuários.
:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-18.cs
private static void ShowError(string title, string message)
{
MessageBox.Show($"{title}: {message}", "Error");
}
Private Shared Sub ShowError(ByVal title As String, ByVal message As String)
MessageBox.Show($"{title}: {message}", "Error")
End Sub
4.10 Exemplo de código completo
O código completo, que combina todos os recursos acima, pode ser encontrado no arquivo de exemplo vinculado ao seu projeto.
:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-19.cs
using IronQr;
using IronSoftware.Drawing;
using Color = IronSoftware.Drawing.Color;
namespace IronQR_QR_Generator_WinForms
{
public partial class QR_Generator : Form
{
string qrCodesDirectory = System.IO.Path.Combine(Application.StartupPath, "QR Codes");
Color bgColor = Color.White;
Color color = Color.Black;
AnyBitmap? logoBmp = null;
public QR_Generator()
{
InitializeComponent();
SetLicenseKey();
EnsureDirectoryExists(qrCodesDirectory);
}
private static void SetLicenseKey()
{
IronQr.License.LicenseKey = "License-Key";
}
private static void EnsureDirectoryExists(string path)
{
if (!System.IO.Directory.Exists(path))
{
System.IO.Directory.CreateDirectory(path);
}
}
private void btn_color_Click(object sender, EventArgs e)
{
UpdateColor(ref color, txt_selected_color, false);
}
private void btn_background_Click(object sender, EventArgs e)
{
UpdateColor(ref bgColor, txt_selected_bgcolor, true);
}
private string ColorToHex(System.Drawing.Color color)
{
return $"#{color.R:X2}{color.G:X2}{color.B:X2}";
}
private void UpdateColor(ref Color targetColor, Control display, bool isBackground)
{
if (select_color.ShowDialog() == DialogResult.OK)
{
var hexColor = ColorToHex(select_color.Color);
targetColor = new Color(hexColor);
display.BackColor = select_color.Color;
}
}
private void btn_logo_Click(object sender, EventArgs e)
{
if (select_logo.ShowDialog() == DialogResult.OK)
{
try
{
logoBmp = new AnyBitmap(select_logo.FileName);
selected_logo.Image = Image.FromFile(select_logo.FileName);
}
catch (Exception ex)
{
ShowError("An error occurred while loading the logo", ex.Message);
}
}
}
private void btn_generate_Click(object sender, EventArgs e)
{
GenerateQRCode();
}
private void GenerateQRCode()
{
try
{
var options = new QrOptions(QrErrorCorrectionLevel.High);
var myQr = QrWriter.Write(txt_QR.Text, options);
var style = CreateStyleOptions();
var qrImage = myQr.Save(style);
var fileName = $"{DateTime.Now:yyyyMMddHHmmssfff}_QR.png";
var fullPath = System.IO.Path.Combine(qrCodesDirectory, fileName);
qrImage.SaveAs(fullPath);
pictureBox.Image = Image.FromFile(fullPath);
}
catch (Exception ex)
{
ShowError("An error occurred during QR code generation or saving", ex.Message);
}
}
private QrStyleOptions CreateStyleOptions()
{
return new QrStyleOptions
{
BackgroundColor = bgColor,
Color = color,
Dimensions = txt_dimension.Value > 0 ? Convert.ToInt32(txt_dimension.Value) : throw new ArgumentException("Please select valid dimensions!"),
Margins = Convert.ToInt32(txt_margin.Value),
Logo = logoBmp != null ? new QrLogo { Bitmap = logoBmp, Width = 50, Height = 50, CornerRadius = 5 } : null
};
}
private void btn_save_Click(object sender, EventArgs e)
{
SaveQRCode();
}
private void SaveQRCode()
{
if (pictureBox.Image == null)
{
MessageBox.Show("There is no QR code to save.", "Error");
return;
}
saveFileDialog.Filter = "PNG Files|*.png|JPEG Files|*.jpg";
saveFileDialog.Title = "Save QR Code";
saveFileDialog.FileName = "QRCode";
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
try
{
pictureBox.Image.Save(saveFileDialog.FileName, DetermineImageFormat(saveFileDialog.FileName));
MessageBox.Show("QR Code has been saved!", "Success");
}
catch (Exception ex)
{
ShowError("An error occurred while saving the QR code", ex.Message);
}
}
}
private System.Drawing.Imaging.ImageFormat DetermineImageFormat(string filePath)
{
return System.IO.Path.GetExtension(filePath).ToLower() == ".jpg" ? System.Drawing.Imaging.ImageFormat.Jpeg : System.Drawing.Imaging.ImageFormat.Png;
}
private void btn_reset_Click(object sender, EventArgs e)
{
ResetFields();
}
private void ResetFields()
{
txt_QR.Text = string.Empty;
txt_dimension.Value = 200;
txt_margin.Value = 0;
bgColor = Color.White;
color = Color.Black;
txt_selected_color.BackColor = bgColor;
txt_selected_bgcolor.BackColor = color;
logoBmp = null;
selected_logo.Image = null;
pictureBox.Image = null;
}
private static void ShowError(string title, string message)
{
MessageBox.Show($"{title}: {message}", "Error");
}
}
}
Imports IronQr
Imports IronSoftware.Drawing
Imports Color = IronSoftware.Drawing.Color
Namespace IronQR_QR_Generator_WinForms
Partial Public Class QR_Generator
Inherits Form
Private qrCodesDirectory As String = System.IO.Path.Combine(Application.StartupPath, "QR Codes")
Private bgColor As Color = Color.White
Private color As Color = Color.Black
Private logoBmp? As AnyBitmap = Nothing
Public Sub New()
InitializeComponent()
SetLicenseKey()
EnsureDirectoryExists(qrCodesDirectory)
End Sub
Private Shared Sub SetLicenseKey()
IronQr.License.LicenseKey = "License-Key"
End Sub
Private Shared Sub EnsureDirectoryExists(ByVal path As String)
If Not System.IO.Directory.Exists(path) Then
System.IO.Directory.CreateDirectory(path)
End If
End Sub
Private Sub btn_color_Click(ByVal sender As Object, ByVal e As EventArgs)
UpdateColor(color, txt_selected_color, False)
End Sub
Private Sub btn_background_Click(ByVal sender As Object, ByVal e As EventArgs)
UpdateColor(bgColor, txt_selected_bgcolor, True)
End Sub
Private Function ColorToHex(ByVal color As System.Drawing.Color) As String
Return $"#{color.R:X2}{color.G:X2}{color.B:X2}"
End Function
Private Sub UpdateColor(ByRef targetColor As Color, ByVal display As Control, ByVal isBackground As Boolean)
If select_color.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
Dim hexColor = ColorToHex(select_color.Color)
targetColor = New Color(hexColor)
display.BackColor = select_color.Color
End If
End Sub
Private Sub btn_logo_Click(ByVal sender As Object, ByVal e As EventArgs)
If select_logo.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
Try
logoBmp = New AnyBitmap(select_logo.FileName)
selected_logo.Image = Image.FromFile(select_logo.FileName)
Catch ex As Exception
ShowError("An error occurred while loading the logo", ex.Message)
End Try
End If
End Sub
Private Sub btn_generate_Click(ByVal sender As Object, ByVal e As EventArgs)
GenerateQRCode()
End Sub
Private Sub GenerateQRCode()
Try
Dim options = New QrOptions(QrErrorCorrectionLevel.High)
Dim myQr = QrWriter.Write(txt_QR.Text, options)
Dim style = CreateStyleOptions()
Dim qrImage = myQr.Save(style)
Dim fileName = $"{DateTime.Now:yyyyMMddHHmmssfff}_QR.png"
Dim fullPath = System.IO.Path.Combine(qrCodesDirectory, fileName)
qrImage.SaveAs(fullPath)
pictureBox.Image = Image.FromFile(fullPath)
Catch ex As Exception
ShowError("An error occurred during QR code generation or saving", ex.Message)
End Try
End Sub
Private Function CreateStyleOptions() As QrStyleOptions
'INSTANT VB TODO TASK: Throw expressions are not converted by Instant VB:
'ORIGINAL LINE: return new QrStyleOptions { BackgroundColor = bgColor, Color = color, Dimensions = txt_dimension.Value > 0 ? Convert.ToInt32(txt_dimension.Value) : throw new ArgumentException("Please select valid dimensions!"), Margins = Convert.ToInt32(txt_margin.Value), Logo = logoBmp != null ? new QrLogo { Bitmap = logoBmp, Width = 50, Height = 50, CornerRadius = 5 } : null };
Return New QrStyleOptions With {
.BackgroundColor = bgColor,
.Color = color,
.Dimensions = If(txt_dimension.Value > 0, Convert.ToInt32(txt_dimension.Value), throw New ArgumentException("Please select valid dimensions!")),
.Margins = Convert.ToInt32(txt_margin.Value),
.Logo = If(logoBmp IsNot Nothing, New QrLogo With {
.Bitmap = logoBmp,
.Width = 50,
.Height = 50,
.CornerRadius = 5
}, Nothing)
}
End Function
Private Sub btn_save_Click(ByVal sender As Object, ByVal e As EventArgs)
SaveQRCode()
End Sub
Private Sub SaveQRCode()
If pictureBox.Image Is Nothing Then
MessageBox.Show("There is no QR code to save.", "Error")
Return
End If
saveFileDialog.Filter = "PNG Files|*.png|JPEG Files|*.jpg"
saveFileDialog.Title = "Save QR Code"
saveFileDialog.FileName = "QRCode"
If saveFileDialog.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
Try
pictureBox.Image.Save(saveFileDialog.FileName, DetermineImageFormat(saveFileDialog.FileName))
MessageBox.Show("QR Code has been saved!", "Success")
Catch ex As Exception
ShowError("An error occurred while saving the QR code", ex.Message)
End Try
End If
End Sub
Private Function DetermineImageFormat(ByVal filePath As String) As System.Drawing.Imaging.ImageFormat
Return If(System.IO.Path.GetExtension(filePath).ToLower() = ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg, System.Drawing.Imaging.ImageFormat.Png)
End Function
Private Sub btn_reset_Click(ByVal sender As Object, ByVal e As EventArgs)
ResetFields()
End Sub
Private Sub ResetFields()
txt_QR.Text = String.Empty
txt_dimension.Value = 200
txt_margin.Value = 0
bgColor = Color.White
color = Color.Black
txt_selected_color.BackColor = bgColor
txt_selected_bgcolor.BackColor = color
logoBmp = Nothing
selected_logo.Image = Nothing
pictureBox.Image = Nothing
End Sub
Private Shared Sub ShowError(ByVal title As String, ByVal message As String)
MessageBox.Show($"{title}: {message}", "Error")
End Sub
End Class
End Namespace
Etapa 5: Executar o aplicativo
Ao executar o aplicativo, a janela principal aparece organizada com seções para entrada, formatação, saída e ações. Siga as instruções da interface do usuário para inserir dados, personalizar seu código QR e gerar e salvar o código QR conforme desejado.
Conclusão
Em resumo, este guia apresentou o processo de geração de códigos QR usando a biblioteca IronQR em uma aplicação C#. Ao detalhar as etapas, desde a configuração do seu projeto no Visual Studio, a integração da biblioteca IronQR , o design de uma interface amigável e a escrita da lógica de backend, demonstramos como é acessível adicionar a funcionalidade de código QR aos seus aplicativos.
Para aqueles interessados em explorar melhor as funcionalidades do IronQR , vale ressaltar que o IronQR oferece um período de teste gratuito para você começar. Caso você decida integrar o IronQR em seus projetos, as licenças começam em $799, proporcionando uma solução econômica para geração de códigos QR de nível profissional.
Perguntas frequentes
Como posso criar um aplicativo gerador de código QR em C#?
Para criar um aplicativo gerador de código QR em C#, você pode usar a biblioteca IronQR. Comece configurando um aplicativo Windows Forms no Visual Studio, instale o IronQR via NuGet e projete a interface do seu aplicativo. Implemente a lógica de geração de código QR usando os recursos do IronQR, como seleção de cores e incorporação de logotipos.
Quais são os benefícios de usar uma biblioteca de código QR for .NET?
Uma biblioteca de código QR for .NET, como o IronQR, oferece recursos avançados, como alta precisão na leitura de códigos QR, opções de personalização para geração de códigos QR e suporte para diversos ambientes .NET. Ela também permite redimensionar e estilizar códigos QR.
Como posso lidar com erros ao gerar códigos QR em C#?
Em C#, você pode lidar com erros durante a geração de códigos QR implementando mecanismos adequados de tratamento de erros usando blocos try-catch. O IronQR facilita o gerenciamento de erros, garantindo que quaisquer problemas durante a criação do código QR sejam resolvidos de forma eficiente.
Posso incorporar logotipos em códigos QR usando uma biblioteca de códigos QR?
Sim, você pode incorporar logotipos em códigos QR usando a biblioteca IronQR. Esse recurso permite aprimorar a identidade visual dos seus códigos QR, incorporando logotipos personalizados ao design.
Como faço para salvar códigos QR gerados em uma aplicação C#?
Você pode salvar códigos QR gerados em um aplicativo C# usando a funcionalidade do IronQR para especificar diretórios de armazenamento. Isso permite gerenciar e armazenar códigos QR gerados de forma eficiente dentro do seu aplicativo.
Quais são os passos necessários para configurar uma chave de licença para uma biblioteca de códigos QR?
Para configurar uma chave de licença para o IronQR, você precisa incorporar o código de licenciamento em seu aplicativo. Normalmente, isso envolve adicionar linhas de código específicas fornecidas pelo IronQR para ativar a biblioteca com a licença adquirida.
Como posso estilizar códigos QR com cores específicas em minha aplicação C#?
O IronQR permite que você estilize códigos QR com cores específicas usando seus recursos de personalização de cores. Você pode selecionar cores para o primeiro plano e o fundo do código QR usando as caixas de diálogo de seleção de cores integradas ao seu aplicativo.
Qual é o processo para instalar uma biblioteca de código QR no Visual Studio?
Para instalar uma biblioteca de código QR como o IronQR no Visual Studio, use o Gerenciador de Pacotes NuGet. Pesquise por 'IronQR' e clique em 'Instalar' para adicioná-la ao seu projeto. Como alternativa, use o Console do Gerenciador de Pacotes com o comando 'Install-Package IronQR'.

