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

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

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
$vbLabelText   $csharpLabel

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.

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

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.

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 Baixar 67,270 | Versão: 2026.5 just released
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.