Como Construir um Scanner de Código QR em WPF
Windows Presentation Foundation (WPF) é um framework .NET para construir aplicações de desktop Windows com UIs definidas em XAML. IronQR integra-se diretamente com o WPF, permitindo a leitura de códigos QR a partir de arquivos de imagem selecionados pelo usuário com apenas algumas linhas de C#.
Neste guia, construiremos uma aplicação WPF que abre um diálogo de arquivo, carrega uma imagem selecionada e decodifica qualquer código QR embutido usando o IronQR. A abordagem suporta formatos de imagem comuns como PNG, JPEG, BMP, GIF, TIFF, entre outros.
Como Ler um Código QR no WPF
- Instale a biblioteca C# IronQR via NuGet
- Adicione um
Buttone umTextBlockà janela WPF em XAML - Abra um diálogo de arquivo com
OpenFileDialogpara selecionar uma imagem do disco - Carregue a imagem com
AnyBitmap.FromFilee coloque-a em umQrImageInput - Chame
Reade exiba o valor decodificado noTextBlock
Pré-requisitos
- Visual Studio 2022 com a carga de trabalho desenvolvimento de desktop .NET instalada
- Um projeto WPF direcionado for .NET 8 ou superior
Instalar IronQR
Instale a biblioteca IronQR usando o Console do Gerenciador de Pacotes NuGet no Visual Studio. Navegue até Ferramentas > Gerenciador de Pacotes NuGet > Console do Gerenciador de Pacotes e execute:
Install-Package IronQR
Como alternativa, procure por IronQR no NuGet e instale a versão mais recente.
Layout da Janela WPF
A interface do scanner usa um Button para acionar a caixa de diálogo do arquivo e um TextBlock para exibir o resultado decodificado. Adicione a seguinte marcação a MainWindow.xaml:
<StackPanel Margin="28" VerticalAlignment="Center">
<TextBlock Text="WPF QR Code Scanner" FontSize="20" FontWeight="Bold" Margin="0,0,0,16"/>
<Button x:Name="ScanButton"
Content="Select Image and Scan QR Code"
Click="OnScanButtonClicked"
Padding="12,8"
Margin="0,0,0,16"
HorizontalAlignment="Left"/>
<TextBlock x:Name="ResultLabel"
Text="Select an image to scan."
TextWrapping="Wrap"
FontSize="14"/>
</StackPanel>
<StackPanel Margin="28" VerticalAlignment="Center">
<TextBlock Text="WPF QR Code Scanner" FontSize="20" FontWeight="Bold" Margin="0,0,0,16"/>
<Button x:Name="ScanButton"
Content="Select Image and Scan QR Code"
Click="OnScanButtonClicked"
Padding="12,8"
Margin="0,0,0,16"
HorizontalAlignment="Left"/>
<TextBlock x:Name="ResultLabel"
Text="Select an image to scan."
TextWrapping="Wrap"
FontSize="14"/>
</StackPanel>
Exemplo de Entrada
Use o código QR abaixo como imagem de teste. Salve no seu dispositivo, selecione através do diálogo de arquivo e clique em Selecionar Imagem e Ler Código QR. O valor decodificado deve ser exibido como https://ironsoftware.com.**
Código QR de exemplo — codifica https://ironsoftware.com
Digitalização de Código QR com IronQR
Ao clicar no botão, OnScanButtonClicked abre uma caixa de diálogo para selecionar uma imagem. O arquivo selecionado é carregado em um AnyBitmap, passado para QrReader.Read, e o primeiro valor decodificado é gravado em ResultLabel.
Adicione o seguinte método OnScanButtonClicked ao método MainWindow.xaml.cs:
:path=/static-assets/qr/content-code-examples/get-started/wpf-qr-code-scanner.cs
using IronQr;
using IronSoftware.Drawing;
using Microsoft.Win32;
using System.Windows;
private void OnScanButtonClicked(object sender, RoutedEventArgs e)
{
// Open a file dialog to select a QR code image
var dialog = new OpenFileDialog
{
Title = "Select a QR code image",
Filter = "Image Files|*.png;*.jpg;*.jpeg;*.bmp;*.gif;*.tiff"
};
if (dialog.ShowDialog() != true) return;
var imageSource = dialog.FileName;
// Load the image into IronQR
var inputBmp = AnyBitmap.FromFile(imageSource);
// Load the asset into QrImageInput
QrImageInput imageInput = new QrImageInput(inputBmp);
// Create a QR Reader object
QrReader reader = new QrReader();
// Read the input and get all embedded QR Codes
IEnumerable<QrResult> results = reader.Read(imageInput);
// Display the first result
var firstResult = results.FirstOrDefault();
ResultLabel.Text = firstResult != null
? "Scanned Text: " + firstResult.Value
: "No QR code found in the selected image.";
}
Imports IronQr
Imports IronSoftware.Drawing
Imports Microsoft.Win32
Imports System.Windows
Private Sub OnScanButtonClicked(sender As Object, e As RoutedEventArgs)
' Open a file dialog to select a QR code image
Dim dialog As New OpenFileDialog With {
.Title = "Select a QR code image",
.Filter = "Image Files|*.png;*.jpg;*.jpeg;*.bmp;*.gif;*.tiff"
}
If dialog.ShowDialog() <> True Then Return
Dim imageSource As String = dialog.FileName
' Load the image into IronQR
Dim inputBmp As AnyBitmap = AnyBitmap.FromFile(imageSource)
' Load the asset into QrImageInput
Dim imageInput As New QrImageInput(inputBmp)
' Create a QR Reader object
Dim reader As New QrReader()
' Read the input and get all embedded QR Codes
Dim results As IEnumerable(Of QrResult) = reader.Read(imageInput)
' Display the first result
Dim firstResult As QrResult = results.FirstOrDefault()
ResultLabel.Text = If(firstResult IsNot Nothing, "Scanned Text: " & firstResult.Value, "No QR code found in the selected image.")
End Sub
OpenFileDialog oferece seleção nativa de arquivos do Windows filtrada para formatos de imagem comuns. AnyBitmap.FromFile lida com a decodificação de formato para entradas PNG, JPEG, BMP, GIF e TIFF, enquanto QrReader.Read retorna um IEnumerable<QrResult> contendo uma entrada para cada código QR detectado. FirstOrDefault retorna com segurança null quando nenhum código QR é encontrado, evitando exceções em imagens sem um código válido.
Saída
Após selecionar uma imagem de código QR e clicar no botão de leitura, o valor decodificado aparece em TextBlock abaixo do botão.
Valor decodificado do código QR exibido na janela WPF
Baixar o Projeto
Conclusão
O IronQR se integra a um aplicativo WPF com configuração mínima — uma única chamada QrReader.Read lida com todo o pipeline de decodificação no desktop. Para ler vários códigos QR de uma única imagem, itere sobre a coleção completa de resultados em vez de chamar FirstOrDefault.
Este mesmo padrão se estende ao processamento em lote percorrendo um diretório de arquivos de imagem, ou à leitura em tempo real, capturando quadros de uma transmissão de webcam com um elemento de mídia WPF.
Para mais informações sobre leitura de códigos QR e os modos de digitalização disponíveis, veja os guias Ler Códigos QR de Imagem e Ler Códigos QR com Modos de Digitalização.
Perguntas frequentes
Sobre o que é o Tutorial de Leitor de Código QR para WPF?
O Tutorial de Leitor de Código QR para WPF fornece um guia passo a passo para construir um leitor de código QR usando IronQR. Explica como usar o OpenFileDialog para a seleção de imagens e QrReader.Read para decodificação de códigos QR em um aplicativo de desktop Windows.
Como o IronQR facilita a leitura de códigos QR em um aplicativo WPF?
O IronQR simplifica a leitura de códigos QR em um aplicativo WPF ao fornecer ferramentas como o QrReader.Read, que decodifica eficientemente códigos QR de imagens selecionadas via OpenFileDialog.
Quais são os principais componentes necessários para construir um leitor de código QR no WPF?
Os principais componentes para construir um leitor de código QR no WPF com o IronQR incluem o OpenFileDialog para a seleção de imagens e o método QrReader.Read para decodificação de códigos QR.
O IronQR pode decodificar códigos QR de diferentes formatos de imagem?
Sim, o IronQR pode decodificar códigos QR de vários formatos de imagem, tornando-o versátil para uso em aplicativos WPF onde as imagens podem vir em diferentes tipos de arquivo.
É possível integrar o IronQR com aplicativos WPF existentes?
Absolutamente, o IronQR pode ser integrado a aplicativos WPF existentes, permitindo que os desenvolvedores adicionem capacidades de leitura de código QR sem precisar refazer seu sistema atual.
O que torna o IronQR adequado para o desenvolvimento WPF?
O IronQR é adequado para o desenvolvimento WPF devido à sua facilidade de uso, robustas capacidades de decodificação de código QR e integração perfeita em aplicações de desktop Windows.
Como o OpenFileDialog melhora a experiência do usuário em um leitor de código QR para WPF?
O OpenFileDialog melhora a experiência do usuário ao fornecer uma interface simples para a seleção de arquivos de imagem, que podem ser processados pelo IronQR para decodificar códigos QR.
Qual é o papel do QrReader.Read no processo de leitura de código QR?
O QrReader.Read é crucial no processo de leitura de código QR ao decodificar o código QR da imagem selecionada, aproveitando os avançados algoritmos de decodificação do IronQR.
Existem pré-requisitos para usar o IronQR em um aplicativo WPF?
Para usar o IronQR em um aplicativo WPF, os desenvolvedores devem ter um entendimento básico do desenvolvimento WPF e familiaridade com C#. A API simples do IronQR o torna acessível para desenvolvedores de vários níveis de habilidade.
Como o IronQR garante precisão na decodificação de código QR?
O IronQR garante precisão na decodificação de código QR através de seus algoritmos avançados, que são projetados para lidar com várias complexidades de código QR e qualidades de imagem de forma eficiente.

