Wie man einen QR-Code-Scanner in WPF baut
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.
Wie man einen QR-Code in WPF scannt
- Installieren Sie die IronQR C#-Bibliothek über NuGet
- Fügen Sie einen
Buttonund einTextBlockzum WPF-Fenster in XAML hinzu - Öffnen Sie einen Dateidialog mit
OpenFileDialog, um ein Bild von der Festplatte auszuwählen - Laden Sie das Bild mit
AnyBitmap.FromFileund wickeln Sie es in einQrImageInput - Rufen Sie
Readauf und zeigen Sie den dekodierten Wert imTextBlockan
Voraussetzungen
- Visual Studio 2022 mit der .NET-Desktopentwicklung-Arbeitslast installiert
- 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>
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.
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
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.
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.

