Jak zbudować skaner kodów QR w WPF

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

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.

Wymagania wstępne

  1. Visual Studio 2022 z zainstalowanym środowiskiem programistycznym .NET dla komputerów stacjonarnych
  2. 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>
XML

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.**

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

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

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.

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

Wartość odkodowanego kodu QR wyświetlona w oknie WPF

Pobierz projekt

Kliknij tutaj, aby pobrać kompletny projekt WpfQrScanner.

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.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 67,270 | Wersja: 2026.5 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronQR
uruchom próbkę obserwuj, jak Twój URL staje się kodem QR.