Comment créer un scanner de codes QR dans WPF

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

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.

Prérequis

  1. Visual Studio 2022 avec la charge de travail développement de bureau .NET installée
  2. 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>
XML

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.

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

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

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.

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

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.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite
Prêt à commencer?
Nuget Téléchargements 63,625 | Version : 2026.4 vient de sortir
Still Scrolling Icon

Vous faites encore défiler ?

Vous voulez une preuve rapidement ? PM > Install-Package IronQR
exécuter un échantillon regarder votre URL devenir un code QR.