Wie man einen QR-Code-Scanner in WPF baut
Windows Presentation Foundation (WPF) ist ein .NET-Framework zum Erstellen von Windows-Desktop-Anwendungen mit XAML-definierten Benutzeroberflächen. IronQR integriert sich direkt in WPF, wodurch das Scannen von QR-Codes aus vom Benutzer ausgewählten Bilddateien mit nur wenigen Zeilen C# ermöglicht wird.
In diesem Leitfaden erstellen wir eine WPF-Anwendung, die einen Dateidialog öffnet, ein ausgewähltes Bild lädt und einen eingebetteten QR-Code mit IronQR 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 einenTextBlockzum 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 einenQrImageInputein - Rufen Sie
Readauf und zeigen Sie den dekodierten Wert imTextBlockan
Voraussetzungen
- Visual Studio 2022 mit installiertem .NET-Desktop-Entwicklung-Arbeitslast
- Ein WPF-Projekt for .NET 8 oder neuer
IronQR installieren
Installieren Sie die IronQR-Bibliothek mithilfe der NuGet-Paket-Manager-Konsole in Visual Studio. Navigieren Sie zu Tools > NuGet-Paketmanager > Paketmanager-Konsole und führen Sie aus:
Install-Package IronQR
Alternativ können Sie auf NuGet nach IronQR suchen und die neueste Version installieren.
WPF-Fenster-Layout
Die Benutzeroberfläche des Scanners verwendet ein Button, um den Dateidialog zu öffnen, und ein TextBlock, um das decodierte Ergebnis anzuzeigen. Fügen Sie den folgenden Markup-Code 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>
Beispielformat
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 die Schaltfläche angeklickt wird, öffnet OnScanButtonClicked einen Dateidialog zur Auswahl eines Bildes. Die ausgewählte Datei wird in 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 übernimmt die Formatdecodierung für PNG-, JPEG-, BMP-, GIF- und TIFF-Eingaben, während QrReader.Read ein IEnumerable<QrResult> zurückgibt, das einen Eintrag pro erkanntem QR-Code enthält. FirstOrDefault gibt sicher null zurück, wenn kein QR-Code gefunden wird, wodurch Ausnahmen bei Bildern ohne gültigen Code vermieden werden.
Ausgabe
Nach Auswahl eines QR-Code-Bildes und Anklicken der Scan-Schaltfläche erscheint der decodierte Wert im Feld TextBlock unterhalb der Schaltfläche.
Dekodierter QR-Code-Wert im WPF-Fenster angezeigt
Downloaden Sie das Projekt
Klicken Sie hier, um das komplette WpfQrScanner-Projekt herunterzuladen.
Abschluss
IronQR lässt sich mit minimalem Aufwand in eine WPF-Anwendung integrieren – ein einziger Aufruf von QrReader.Read übernimmt die gesamte Dekodierungspipeline auf dem Desktop. Um mehrere QR-Codes aus einem einzigen Bild zu scannen, durchlaufen Sie die gesamte Ergebnissammlung, anstatt FirstOrDefault aufzurufen.
Dieses Muster erstreckt sich auch auf Batch-Verarbeitung, indem durch ein Verzeichnis von Bilddateien iteriert wird, oder auf Echtzeit-Scannen durch das Aufnehmen von Frames von einem Webcam-Feed mit einem WPF-Medienelement.
Für mehr Informationen zum Lesen von QR-Codes und den verfügbaren Scanmodi, siehe die Lesen von QR-Codes aus Bild und Lesen von QR-Codes mit Scanmodi Anleitungen.
Häufig gestellte Fragen
Worum geht es im WPF QR Code Scanner Tutorial?
Das WPF QR Code Scanner Tutorial bietet eine Schritt-für-Schritt-Anleitung zum Erstellen eines QR-Code-Scanners mit IronQR. Es erklärt, wie man den OpenFileDialog für die Bildauswahl und QrReader.Read für das Dekodieren von QR-Codes in einer Windows-Desktop-Anwendung verwendet.
Wie erleichtert IronQR das QR-Code-Scannen in einer WPF-Anwendung?
IronQR vereinfacht das QR-Code-Scannen in einer WPF-Anwendung, indem es Tools wie QrReader.Read bereitstellt, die QR-Codes aus über OpenFileDialog ausgewählten Bildern effizient dekodieren.
Was sind die Hauptkomponenten beim Erstellen eines QR-Code-Scanners in WPF?
Die Hauptkomponenten für das Erstellen eines QR-Code-Scanners in WPF mit IronQR sind der OpenFileDialog zur Bildauswahl und die QrReader.Read-Methode für die QR-Code-Dekodierung.
Kann IronQR QR-Codes aus verschiedenen Bildformaten dekodieren?
Ja, IronQR kann QR-Codes aus verschiedenen Bildformaten dekodieren, was es vielseitig für den Einsatz in WPF-Anwendungen macht, bei denen Bilder in unterschiedlichen Dateitypen vorliegen können.
Ist es möglich, IronQR in bestehende WPF-Anwendungen zu integrieren?
Absolut, IronQR kann in bestehende WPF-Anwendungen integriert werden, sodass Entwickler QR-Code-Scanning-Funktionalitäten hinzufügen können, ohne ihr derzeitiges System komplett zu überarbeiten.
Was macht IronQR für die WPF-Entwicklung geeignet?
IronQR ist für die WPF-Entwicklung geeignet aufgrund seiner Benutzerfreundlichkeit, robusten QR-Code-Dekodierungsfähigkeiten und der nahtlosen Integration in Windows-Desktop-Anwendungen.
Wie verbessert der OpenFileDialog die Benutzererfahrung in einem WPF QR-Code-Scanner?
Der OpenFileDialog verbessert die Benutzererfahrung durch eine einfache Benutzeroberfläche zur Auswahl von Bilddateien, die anschließend von IronQR verarbeitet werden können, um QR-Codes zu dekodieren.
Welche Rolle spielt QrReader.Read im QR-Code-Scanning-Prozess?
QrReader.Read ist entscheidend im QR-Code-Scanning-Prozess, da es den QR-Code aus dem ausgewählten Bild dekodiert und dabei die fortschrittlichen Dekodieralgorithmen von IronQR nutzt.
Gibt es Voraussetzungen für die Verwendung von IronQR in einer WPF-Anwendung?
Um IronQR in einer WPF-Anwendung zu verwenden, sollten Entwickler eine grundlegende Kenntnis der WPF-Entwicklung und Vertrautheit mit C# haben. Die übersichtliche API von IronQR macht es Entwicklern aller Erfahrungsstufen zugänglich.
Wie stellt IronQR die Genauigkeit bei der QR-Code-Dekodierung sicher?
IronQR stellt die Genauigkeit bei der QR-Code-Dekodierung durch seine fortschrittlichen Algorithmen sicher, die darauf ausgelegt sind, verschiedenste QR-Code-Komplexitäten und Bildqualitäten effizient zu bewältigen.

