Wie man einen QR-Code-Scanner in WPF baut

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

Windows Presentation Foundation (WPF) ist ein .NET-Framework zum Erstellen von Windows-Desktopanwendungen mit XAML-definierten Benutzeroberflächen. IronQR integriert sich direkt in WPF und ermöglicht das Scannen von QR-Codes aus benutzergewählten Bilddateien mit nur wenigen Zeilen C#.

In diesem Leitfaden erstellen wir eine WPF-Anwendung, die einen Dateidialog öffnet, ein ausgewähltes Bild lädt und mithilfe von IronQR jeden eingebetteten QR-Code dekodiert. Der Ansatz unterstützt PNG, JPEG, BMP, GIF, TIFF und andere gängige Bildformate.

Voraussetzungen

  1. Visual Studio 2022 mit der .NET-Desktopentwicklung-Arbeitslast installiert
  2. Ein WPF-Projekt, das auf .NET 8 oder höher abzielt

Installieren Sie IronQR

Installieren Sie die IronQR-Bibliothek mit der NuGet-Paket-Manager-Konsole in Visual Studio. Navigieren Sie zu Tools > NuGet-Paket-Manager > Paket-Manager-Konsole und führen Sie aus:

Install-Package IronQR

Alternativ suchen Sie nach IronQR auf NuGet und installieren Sie die neueste Version.

WPF-Fensterlayout

Die Scanner-Benutzeroberfläche verwendet einen Button, um den Dateidialog auszulösen, und einen TextBlock, um das dekodierte Ergebnis anzuzeigen. Fügen Sie folgendes Markup zu MainWindow.xaml hinzu:

<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

Beispieleingabe

Verwenden Sie den untenstehenden QR-Code als Testbild. Speichern Sie es auf Ihrem Gerät, wählen Sie es über den Dateidialog aus, und klicken Sie auf Bild auswählen und QR-Code scannen. Der dekodierte Wert sollte als https://ironsoftware.com angezeigt werden.

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

Beispiel-QR-Code — kodiert `https://ironsoftware.com`

QR-Code-Scannen mit IronQR

Wenn der Button geklickt wird, öffnet OnScanButtonClicked einen Dateidialog zur Auswahl eines Bildes. Die ausgewählte Datei wird in ein AnyBitmap geladen, an QrReader.Read übergeben, und der erste dekodierte Wert wird in ResultLabel geschrieben.

Fügen Sie die folgende OnScanButtonClicked-Methode zu MainWindow.xaml.cs hinzu:

: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 bietet eine native Windows-Dateiauswahl, die auf gängige Bildformate gefiltert ist. AnyBitmap.FromFile verarbeitet die Dekodierung von Formaten für PNG, JPEG, BMP, GIF und TIFF-Eingänge, während QrReader.Read ein IEnumerable<QrResult> zurückgibt, das einen Eintrag für jeden erkannten QR-Code enthält. FirstOrDefault gibt sicher null zurück, wenn kein QR-Code gefunden wird, um Ausnahmen bei Bildern ohne gültigen Code zu vermeiden.

Ausgabe

Nach der Auswahl eines QR-Code-Bildes und dem Klicken auf den Scan-Button erscheint der dekodierte Wert in dem unter dem Button befindlichen TextBlock.

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

Dekodierter QR-Code-Wert wird im WPF-Fenster angezeigt

Projekt herunterladen

Klicken Sie hier, um das komplette WpfQrScanner-Projekt herunterzuladen.

Abschluss

IronQR integriert sich mit minimalem Aufwand in eine WPF-Anwendung — ein einzelner QrReader.Read-Aufruf verarbeitet die gesamte Dekodierungspipeline auf dem Desktop. Um mehrere QR-Codes aus einem einzelnen Bild zu scannen, iterieren Sie über die vollständige Ergebnissammlung, anstatt FirstOrDefault aufzurufen.

Dieses gleiche Muster erstreckt sich auf die Stapelverarbeitung, indem ein Verzeichnis von Bilddateien durchlaufen wird, oder auf das Echtzeitscanning, indem Frames aus einem Webcam-Feed mit einem WPF-Medienelement erfasst werden.

Für weitere Informationen zum Lesen von QR-Codes und den verfügbaren Scanmodi siehe die Anleitungen QR-Codes vom Bild lesen und QR-Codes mit Scanmodi lesen.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen
Bereit anzufangen?
Nuget Downloads 63,625 | Version: 2026.4 gerade veröffentlicht
Still Scrolling Icon

Scrollst du immer noch?

Sie brauchen schnell einen Beweis? PM > Install-Package IronQR
Führen Sie ein Beispiel aus und beobachten Sie, wie Ihre URL zu einem QR-Code wird.