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 `Button` e um `TextBlock` à janela WPF em XAML
- Abra um diálogo de arquivo com `OpenFileDialog` para selecionar uma imagem do disco
- Carregue a imagem com `AnyBitmap.FromFile` e coloque-a em um `QrImageInput`
- Chame `Read` e exiba o valor decodificado no `TextBlock`
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
Alternativamente, 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 de 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
Quando o botão é clicado, OnScanButtonClicked abre uma caixa de diálogo de arquivo para selecionar uma imagem. O arquivo selecionado é carregado em um AnyBitmap, passado para QrReader.Read, e o primeiro valor decodificado é escrito em ResultLabel.
Adicione o seguinte método OnScanButtonClicked a 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 fornece seleção de arquivo nativa 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 por 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 digitalização, o valor decodificado aparece no TextBlock abaixo do botão.
Valor decodificado do código QR exibido na janela WPF
Baixar o Projeto
Conclusão
IronQR integra-se em uma aplicação WPF com configuração mínima — uma única chamada QrReader.Read lida com todo o pipeline de decodificação na área de trabalho. Para escanear múltiplos 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.

