Cómo construir un escáner de códigos QR en WPF
Windows Presentation Foundation (WPF) es un framework .NET para construir aplicaciones de escritorio Windows con interfaces de usuario definidas en XAML. IronQR se integra directamente en WPF, permitiendo el escaneo de códigos QR desde archivos de imágenes seleccionados por el usuario con solo unas pocas líneas de C#.
En esta guía, construiremos una aplicación WPF que abra un diálogo de archivos, cargue una imagen seleccionada y decodifique cualquier código QR incrustado usando IronQR. El enfoque soporta PNG, JPEG, BMP, GIF, TIFF, y otros formatos de imagen comunes.
Cómo escanear un código QR en WPF
- Instale la biblioteca C# IronQR a través de NuGet
- Agregue un
Buttony unTextBlocka la ventana WPF en XAML - Abra un diálogo de archivos con
OpenFileDialogpara seleccionar una imagen del disco - Cargue la imagen con
AnyBitmap.FromFiley envuélvala en unQrImageInput - Llame a
Ready muestre el valor decodificado en elTextBlock
Requisitos previos
- Visual Studio 2022 con la carga de trabajo de desarrollo de escritorio .NET instalada
- Un proyecto WPF que apunte a .NET 8 o posterior
Instalar IronQR
Instale la biblioteca IronQR usando la Consola del Administrador de Paquetes NuGet en Visual Studio. Navegue a Herramientas > Administrador de Paquetes NuGet > Consola del Administrador de Paquetes y ejecute:
Install-Package IronQR
Alternativamente, busca IronQR en NuGet e instala la última versión.
Diseño de la ventana WPF
La interfaz de usuario del escáner utiliza un Button para activar el diálogo de archivos y un TextBlock para mostrar el resultado decodificado. Agrega el siguiente marcado 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>
Entrada de muestra
Use el código QR a continuación como imagen de prueba. Guárdelo en su dispositivo, selecciónelo a través del cuadro de diálogo de archivos y haga clic en Seleccionar imagen y escanear código QR. El valor decodificado debería mostrarse como https://ironsoftware.com.**
Código QR de muestra — codifica https://ironsoftware.com
Escaneo de código QR con IronQR
Cuando se hace clic en el botón, OnScanButtonClicked abre un diálogo de archivos para seleccionar una imagen. El archivo seleccionado se carga en un AnyBitmap, se pasa a QrReader.Read, y el primer valor decodificado se escribe en ResultLabel.
Agrega el siguiente 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 proporciona selección nativa de archivos en Windows, filtrada a formatos de imagen comunes. AnyBitmap.FromFile maneja la decodificación de formatos para entradas PNG, JPEG, BMP, GIF y TIFF, mientras que QrReader.Read devuelve un IEnumerable<QrResult> que contiene una entrada por cada código QR detectado. FirstOrDefault devuelve de forma segura null cuando no se encuentra un código QR, evitando excepciones en imágenes sin un código válido.
Producción
Después de seleccionar una imagen de código QR y hacer clic en el botón de escanear, el valor decodificado aparece en el TextBlock debajo del botón.
Valor del código QR decodificado renderizado en la ventana WPF
Descargar el Proyecto
Haga clic aquí para descargar el proyecto completo WpfQrScanner.
Conclusión
IronQR se integra en una aplicación WPF con una configuración mínima — una sola llamada QrReader.Read maneja toda la pipeline de decodificación en el escritorio. Para escanear múltiples códigos QR de una sola imagen, itera sobre la colección completa de resultados en lugar de llamar a FirstOrDefault.
Este mismo patrón se extiende al procesamiento por lotes al iterar a través de un directorio de archivos de imagen, o al escaneo en tiempo real al capturar cuadros de una transmisión de cámara web con un elemento de medios WPF.
Para más información sobre la lectura de códigos QR y los modos de escaneo disponibles, consulte las guías Leer códigos QR desde imagen y Leer códigos QR con modos de escaneo.
Preguntas Frecuentes
¿De qué trata el Tutorial del Escáner de Código QR de WPF?
El Tutorial del Escáner de Código QR de WPF proporciona una guía paso a paso para construir un escáner de código QR usando IronQR. Explica cómo usar OpenFileDialog para la selección de imágenes y QrReader.Read para decodificar códigos QR en una aplicación de escritorio Windows.
¿Cómo facilita IronQR el escaneo de códigos QR en una aplicación WPF?
IronQR simplifica el escaneo de códigos QR en una aplicación WPF proporcionando herramientas como QrReader.Read, que decodifican eficientemente códigos QR a partir de imágenes seleccionadas mediante OpenFileDialog.
¿Cuáles son los principales componentes necesarios para construir un escáner de código QR en WPF?
Los principales componentes para construir un escáner de código QR en WPF con IronQR incluyen OpenFileDialog para seleccionar imágenes y el método QrReader.Read para la decodificación de códigos QR.
¿Puede IronQR decodificar códigos QR desde diferentes formatos de imagen?
Sí, IronQR puede decodificar códigos QR desde varios formatos de imagen, lo que lo hace versátil para su uso en aplicaciones WPF donde las imágenes pueden venir en diferentes tipos de archivos.
¿Es posible integrar IronQR con aplicaciones WPF existentes?
Absolutamente, IronQR se puede integrar con aplicaciones WPF existentes, permitiendo a los desarrolladores añadir capacidades de escaneo de códigos QR sin realizar cambios drásticos en su sistema actual.
¿Qué hace que IronQR sea adecuado para el desarrollo de WPF?
IronQR es adecuado para el desarrollo de WPF debido a su facilidad de uso, sus robustas capacidades de decodificación de códigos QR y su integración perfecta en aplicaciones de escritorio Windows.
¿Cómo mejora el OpenFileDialog la experiencia del usuario en un escáner de QR para WPF?
El OpenFileDialog mejora la experiencia del usuario proporcionando una interfaz sencilla para seleccionar archivos de imagen, que luego pueden ser procesados por IronQR para decodificar códigos QR.
¿Cuál es el papel de QrReader.Read en el proceso de escaneo de códigos QR?
QrReader.Read es crucial en el proceso de escaneo de códigos QR ya que decodifica el código QR de la imagen seleccionada, aprovechando los avanzados algoritmos de decodificación de IronQR.
¿Existen prerequisitos para usar IronQR en una aplicación WPF?
Para usar IronQR en una aplicación WPF, los desarrolladores deben tener un entendimiento básico del desarrollo WPF y familiaridad con C#. La API sencilla de IronQR lo hace accesible para desarrolladores de diversos niveles de habilidad.
¿Cómo garantiza IronQR precisión en la decodificación de códigos QR?
IronQR garantiza precisión en la decodificación de códigos QR a través de sus avanzados algoritmos, diseñados para manejar diversas complejidades en códigos QR y calidades de imagen de manera eficiente.

