Jak zbudować skaner kodów QR w WPF
Windows Presentation Foundation (WPF) to platforma .NET Framework służąca do tworzenia aplikacji desktopowych dla systemu Windows z interfejsami użytkownika zdefiniowanymi w języku XAML. IronQR integruje się bezpośrednio z WPF, umożliwiając skanowanie kodów QR z wybranych przez użytkownika plików graficznych za pomocą zaledwie kilku linii kodu C#.
W tym przewodniku stworzymy aplikację WPF, która otwiera okno dialogowe plików, ładuje wybrany obraz i dekoduje każdy osadzony kod QR za pomocą IronQR. Rozwiązanie obsługuje formaty PNG, JPEG, BMP, GIF, TIFF oraz inne popularne formaty obrazów.
Jak zeskanować kod QR w WPF
- Zainstaluj bibliotekę IronQR C# za pośrednictwem NuGet
- Dodaj
przyciskiblok tekstowydo okna WPF w XAML - Otwórz okno dialogowe plików za pomocą
OpenFileDialog,aby wybrać obraz z dysku - Załaduj obraz za pomocą
AnyBitmap.FromFilei umieść go wQrImageInput - Wywołaj
Readi wyświetl zdekodowaną wartość wTextBlock
Wymagania wstępne
- Visual Studio 2022 z zainstalowanym środowiskiem programistycznym .NET dla komputerów stacjonarnych
- Projekt WPF przeznaczony dla platformy .NET 8 lub nowszej
Zainstaluj IronQR
Zainstaluj bibliotekę IronQR za pomocą NuGet Package Manager Console w Visual Studio. Przejdź do Narzędzia > Menedżer pakietów NuGet > Konsola menedżera pakietów i uruchom:
Install-Package IronQR
Alternatywnie, wyszukaj IronQR w NuGet i zainstaluj najnowszą wersję.
Układ okna WPF
Interfejs użytkownika skanera wykorzystuje Button do wywołania okna dialogowego pliku oraz TextBlock do wyświetlenia zdekodowanego wyniku. Dodaj następujący znacznik do 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>
Przykładowe wejście
Użyj poniższego kodu QR jako obrazu testowego. Zapisz go na swoim urządzeniu, wybierz w oknie dialogowym plików, a następnie kliknij Wybierz obraz i zeskanuj kod QR. Zdekodowana wartość powinna być wyświetlana jako https://ironsoftware.com.**
Przykładowy kod QR — koduje https://ironsoftware.com
Skanowanie kodów QR przy użyciu IronQR
Po kliknięciu przycisku OnScanButtonClicked otwiera się okno dialogowe plików, w którym można wybrać obraz. Wybrany plik jest ładowany do AnyBitmap, przekazywany do QrReader.Read, a pierwsza zdekodowana wartość jest zapisywana w ResultLabel.
Dodaj następującą metodę OnScanButtonClicked do 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 zapewnia natywny wybór plików w systemie Windows, filtrowany według popularnych formatów obrazów. AnyBitmap.FromFile obsługuje dekodowanie formatów dla danych wejściowych PNG, JPEG, BMP, GIF i TIFF, natomiast QrReader.Read zwraca IEnumerable<QrResult> zawierający jeden wpis na każdy wykryty kod QR. FirstOrDefault bezpiecznie zwraca null, gdy nie znaleziono kodu QR, unikając wyjątków w przypadku obrazów bez prawidłowego kodu.
Wynik
Po wybraniu obrazu kodu QR i kliknięciu przycisku skanowania zdekodowana wartość pojawia się w polu TextBlock poniżej przycisku.
Wartość odkodowanego kodu QR wyświetlona w oknie WPF
Pobierz projekt
Wnioski
IronQR integruje się z aplikacją WPF przy minimalnej konfiguracji — pojedyncze wywołanie QrReader.Read obsługuje cały proces dekodowania na komputerze stacjonarnym. Aby zeskanować wiele kodów QR z jednego obrazu, należy iterować przez pełną kolekcję wyników zamiast wywoływać FirstOrDefault.
Ten sam schemat obejmuje przetwarzanie wsadowe poprzez pętlę po katalogu plików graficznych lub skanowanie w czasie rzeczywistym poprzez przechwytywanie klatek z obrazu z kamery internetowej za pomocą elementu multimedialnego WPF.
Aby dowiedzieć się więcej o czytaniu kodów QR i dostępnych trybach skanowania, zobacz przewodniki Read QR Codes from Image oraz Read QR Codes with Scan Modes.
Często Zadawane Pytania
O czym jest Samouczek skanera kodow QR WPF?
Samouczek skanera kodow QR WPF dostarcza krok po kroku przewodnik do budowania skanera kodow QR za pomoca IronQR. Wyjasnia, jak uzywac OpenFileDialog do wyboru obrazow i QrReader.Read do dekodowania kodow QR w aplikacji desktopowej Windows.
Jak IronQR ulatwia skanowanie kodow QR w aplikacji WPF?
IronQR upraszcza skanowanie kodow QR w aplikacji WPF, dostarczajac narzedzi takich jak QrReader.Read, ktore efektywnie dekoduja kody QR z obrazow wybranych za pomoca OpenFileDialog.
Jakie sa glówne skladniki niezbedne do zbudowania skanera kodow QR w WPF?
Glówne skladniki potrzebne do zbudowania skanera kodow QR w WPF z IronQR obejmuja OpenFileDialog do wyboru obrazow i metode QrReader.Read do dekodowania kodow QR.
Czy IronQR moze dekodowac kody QR z roznych formatów obrazów?
Tak, IronQR moze dekodowac kody QR z roznych formatów obrazów, co czyni go uniwersalnym rozwiazaniem do uzycia w aplikacjach WPF, gdzie obrazy moga pochodzic z róznych typów plików.
Czy jest mozliwe zintegrowanie IronQR z istniejacymi aplikacjami WPF?
Oczywiscie, IronQR mozna zintegrowac z istniejacymi aplikacjami WPF, pozwalajac programistom dodac funkcjonalnosc skanowania kodow QR bez zmiany ich aktualnego systemu.
Co sprawia, ze IronQR jest odpowiedni do rozwoju WPF?
IronQR jest odpowiedni do rozwoju WPF za sprawa latwosci uzytkowania, solidnych zdolnosci dekodowania kodu QR i bezproblemowej integracji z aplikacjami desktopowymi Windows.
Jak OpenFileDialog poprawia doswiadczenie uzytkownika w skanerze kodow QR WPF?
OpenFileDialog poprawia doswiadczenie uzytkownika, oferujac prosty interfejs do wyboru plików obrazów, które moga byc potem przetwarzane przez IronQR w celu dekodowania kodów QR.
Jaka jest rola QrReader.Read w procesie skanowania kodów QR?
QrReader.Read jest kluczowe w procesie skanowania kodów QR, poniewaz dekoduje kod QR z wybranego obrazu, wykorzystujac zaawansowane algorytmy dekodowania IronQR.
Czy istnieja jakies wymogi wstepne do uzwania IronQR w aplikacji WPF?
Aby korzystac z IronQR w aplikacji WPF, programisci powinni miec podstawowe zrozumienie rozwoju WPF oraz znajomosc C#. Prostota API IronQR sprawia, ze jest ono dostepne dla programistow o róznym poziomie umiejetnosci.
Jak IronQR zapewnia dokladnosc w dekodowaniu kodów QR?
IronQR zapewnia dokladnosc w dekodowaniu kodów QR poprzez swoje zaawansowane algorytmy, które sa zaprojektowane do efektywnego obslugiwania róznych zlozonosci kodów QR i jakosci obrazów.

