Como Construir um Scanner de Código QR em WPF

This article was translated from English: Does it need improvement?
Translated
View the article in English

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.

Pré-requisitos

  1. Visual Studio 2022 com a carga de trabalho desenvolvimento de desktop .NET instalada
  2. 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>
XML

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.

Sample QR code encoding https://ironsoftware.com for testing the WPF QR scanner

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.";
}
$vbLabelText   $csharpLabel

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.

WPF QR Code Scanner using IronQR — decoded result displayed in the window

Valor decodificado do código QR exibido na janela WPF

Baixar o Projeto

Clique aqui para baixar o projeto completo do WpfQrScanner.

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.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais
Pronto para começar?
Nuget Downloads 61,359 | Versão: 2026.3 acaba de ser lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronQR
executar um exemplo Veja seu URL se transformar em um código QR.