Comment créer un scanner de codes QR dans WPF
Windows Presentation Foundation (WPF) est un framework .NET pour créer des applications de bureau Windows avec des interfaces utilisateur définies en XAML. IronQR s'intègre directement dans WPF, permettant le scan de codes QR à partir de fichiers image sélectionnés par l'utilisateur avec seulement quelques lignes de C#.
Dans ce guide, nous allons créer une application WPF qui ouvre une boîte de dialogue de fichiers, charge une image sélectionnée et décode tout code QR intégré à l'aide de IronQR. L'approche prend en charge les formats d'image courants tels que PNG, JPEG, BMP, GIF, TIFF, etc.
Comment scanner un code QR dans WPF
- Installez la bibliothèque C# IronQR via NuGet
- Ajoutez un `Button` et un `TextBlock` à la fenêtre WPF en XAML
- Ouvrez une boîte de dialogue de fichiers avec `OpenFileDialog` pour sélectionner une image depuis le disque
- Chargez l'image avec `AnyBitmap.FromFile` et enveloppez-la dans un `QrImageInput`
- Appelez `Read` et affichez la valeur décodée dans le `TextBlock`
Prérequis
- Visual Studio 2022 avec la charge de travail développement de bureau .NET installée
- Un projet WPF ciblant .NET 8 ou une version ultérieure
Installer IronQR
Installez la bibliothèque IronQR en utilisant la console du gestionnaire de packages NuGet dans Visual Studio. Accédez à Outils > Gestionnaire de packages NuGet > Console du gestionnaire de packages et exécutez :
Install-Package IronQR
Alternativement, recherchez IronQR sur NuGet et installez la dernière version.
Disposition de la fenêtre WPF
L'interface utilisateur du scanner utilise un Button pour déclencher la boîte de dialogue de fichiers et un TextBlock pour afficher le résultat décodé. Ajoutez le balisage suivant à 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>
Exemple d'entrée
Utilisez le code QR ci-dessous comme image test. Enregistrez-le sur votre appareil, sélectionnez-le via la boîte de dialogue de fichiers, puis cliquez sur Sélectionner l'image et scanner le code QR. La valeur décodée devrait s'afficher comme https://ironsoftware.com.
Exemple de code QR — encode `https://ironsoftware.com`
Scan de code QR avec IronQR
Lorsque le bouton est cliqué, OnScanButtonClicked ouvre une boîte de dialogue de fichiers pour sélectionner une image. Le fichier sélectionné est chargé dans un AnyBitmap, transmis à QrReader.Read, et la première valeur décodée est écrite dans ResultLabel.
Ajoutez la méthode OnScanButtonClicked suivante à 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 offre une sélection de fichiers native Windows filtrée pour les formats d'image courants. AnyBitmap.FromFile gère le décodage des formats pour les entrées PNG, JPEG, BMP, GIF, et TIFF, tandis que QrReader.Read retourne un IEnumerable<QrResult> contenant une entrée par code QR détecté. FirstOrDefault retourne en toute sécurité null lorsqu'aucun code QR n'est trouvé, évitant les exceptions sur les images sans code valide.
Sortie
Après avoir sélectionné une image de code QR et cliqué sur le bouton de scan, la valeur décodée apparaît dans le TextBlock sous le bouton.
Valeur du code QR décodée rendue dans la fenêtre WPF
Téléchargez le projet
Cliquez ici pour télécharger le projet complet WpfQrScanner.
Conclusion
IronQR s'intègre dans une application WPF avec une configuration minimale — un seul appel QrReader.Read gère l'ensemble du pipeline de décodage sur le bureau. Pour scanner plusieurs codes QR à partir d'une seule image, parcourez l'ensemble des résultats plutôt que d'appeler FirstOrDefault.
Ce même modèle s'étend au traitement en lot en parcourant un répertoire de fichiers image, ou au scan en temps réel en capturant des images depuis un flux de caméra avec un élément média WPF.
Pour en savoir plus sur la lecture de codes QR et les modes de scan disponibles, consultez les guides Lire les codes QR à partir d'une image et Lire les codes QR avec les modes de scan.

