IRONSOFTWAREHOME
KORZYSTANIE Z IRONQR

Jak stworzyć aplikację do generowania kodów QR w C#

Curtis Chau
Curtis Chau
Updated: 8 maja 2026

Witamy w naszym przewodniku po tworzeniu kodów QR przy użyciu języka C#! Kody QR i biblioteka DLL BarCode .NET stały się popularnymi sposobami szybkiego i wydajnego udostępniania informacji. Niezależnie od tego, czy tworzysz aplikację, zarządzasz stroną internetową, czy po prostu szukasz fajnego sposobu na udostępnianie linków, te kody mogą okazać się niezwykle przydatne. W tym przewodniku przedstawimy, jak efektywnie generować kody QR za pomocą IronQR, zapewniając możliwość generowania kodów QR dostosowanych do Twoich potrzeb. Ta biblioteka ułatwia każdemu, kto pracuje z językiem C#, tworzenie kodów QR bez konieczności zagłębiania się w skomplikowaną logikę. Przeprowadzimy Cię przez kolejne etapy, upewniając się, że masz wszystko, czego potrzebujesz, aby rozpocząć pracę. Niezależnie od tego, czy chcesz dodać do swojej aplikacji funkcję generatora kodów QR, czy po prostu jesteś ciekawy, jak to działa, trafiłeś we właściwe miejsce. Zacznijmy.

Jak stworzyć generator kodów QR w języku C#

  1. Utwórz aplikację Windows Forms w Visual Studio
  2. Zainstaluj bibliotekę QR za pomocą NuGet
  3. Zaprojektuj elementy interfejsu użytkownika formularza
  4. Napisz logikę generowania kodów QR
  5. Uruchom aplikację i zacznij tworzyć kody QR

IronQR: biblioteka IronQR dla języka C#

Biblioteka IronQR w języku C# służąca do integracji funkcji kodów QR z aplikacjami .NET. IronQR obsługuje szeroki zakres wersji .NET i typów projektów, w tym C#, VB.NET, F#, .NET Core, .NET Standard, .NET Framework i inne, zapewniając kompatybilność z różnymi środowiskami programistycznymi, takimi jak Windows, Linux, macOS, iOS i Android.

IronQR wyróżnia się zaawansowanymi funkcjami, w tym możliwością odczytu i generowania kodów QR, obsługą wielu formatów obrazów oraz opcjami dostosowywania, takimi jak zmiana rozmiaru, stylizacja i dodawanie logo do kodów QR.

Niektóre kluczowe funkcje IronQR

IronQR wykracza poza podstawowe generowanie kodów QR, oferując kilka funkcji zaprojektowanych z myślą o szerokim zakresie zadań związanych z kodami QR. Przejrzyjmy te funkcje i sprawdźmy przykładowe kody, które będzie można zintegrować z dowolnym szablonem aplikacji .NET, takim jak aplikacja konsolowa.

Odczytuj kody QR

IronQR wyróżnia się w dekodowaniu kodów QR, zapewniając użytkownikom prosty sposób na dostęp do informacji zawartych w kodach QR. Możesz szybko i dokładnie wyodrębnić dane z kodów QR, od prostych adresów URL po złożone informacje osadzone w kodzie.

using IronQr;
using IronSoftware.Drawing;
using Color = IronSoftware.Drawing.Color;

// Set the license key for IronQR
IronQr.License.LicenseKey = "License-Key";

// Load the image file that contains the QR Code
var inputImage = AnyBitmap.FromFile("QRCode.png");

// Prepare the image for QR code detection
QrImageInput qrInput = new QrImageInput(inputImage);

// Initialize the QR Code reader
QrReader qrReader = new QrReader();

// Execute QR Code reading on the provided image
IEnumerable<QrResult> qrResults = qrReader.Read(qrInput);

// Print the value of each QR code found in the image
foreach (var result in qrResults)
{
    Console.WriteLine(result.Value);
}

Do skanowania używamy następującego kodu QR:

Jak stworzyć aplikację do generowania kodów QR w C#: Rysunek 1 - Plik obrazka PNG z kodem QR

Oto otrzymany wynik:

Jak stworzyć aplikację do generowania kodów QR w C#: Rysunek 2 - Odczyt wyniku kodu QR

Proces rozpoczyna się od włączenia niezbędnych przestrzeni nazw, IronQr i IronSoftware.Drawing, z konkretnym odniesieniem do Color z przestrzeni nazw IronSoftware.Drawing do obsługi manipulacji obrazem.

Przed rozpoczęciem procesu odczytu kodu QR, istotne jest aktywowanie oprogramowania za pomocą klucza licencyjnego, przypisując go do IronQr.License.LicenseKey. Kod następnie przystępuje do załadowania obrazu kodu QR z pliku za pomocą AnyBitmap.FromFile("QRCode.png").

Po załadowaniu obrazu następnym krokiem jest przygotowanie go do wykrywania kodu QR. To przygotowanie odbywa się poprzez stworzenie obiektu QrImageInput, który służy jako pojemnik dla obrazu.

Rdzeń tej funkcji leży w klasie QrReader, która zostaje zainicjowana i użyta do wykonania operacji odczytu kodu QR. Czytnik analizuje przygotowany obraz, qrInput, szukając jakichkolwiek zawartych w nim kodów QR. Wynikiem tej operacji jest kolekcja obiektów QrResult, z których każdy reprezentuje wykryty kod QR w obrębie obrazu.

Aby uzyskać dostęp i wykorzystać dane zakodowane w kodach QR, kod przechodzi po kolekcji wyników za pomocą pętli foreach. Każdy obiekt QrResult zawiera właściwości, takie jak wartość kodu QR, którą można uzyskać i wyświetlić.

Opcje niestandardowego trybu odczytu kodów QR

IronQR oferuje różne sposoby odczytu kodów QR z obrazów, dzięki czemu jest wszechstronnym rozwiązaniem dostosowanym do różnych potrzeb. Jedną z opcji jest tryb skanowania mieszanego, który zapewnia równowagę między szybkością a dokładnością, przydatną w sytuacjach, gdy kody QR są niewyraźne lub częściowo zasłonięte.

Kolejną funkcją jest tryb skanowania oparty** na uczeniu maszynowym (ML)**, który wykorzystuje inteligentną technologię do odczytywania kodów QR, które są uszkodzone lub trudne do odczytania w normalnych warunkach. Ten tryb świetnie sprawdza się w trudnych sytuacjach, w których kody QR są trudne do wykrycia.

Na koniec mamy tryb skanowania podstawowego, który jest najszybszym i najprostszym sposobem skanowania wyraźnych i prostych kodów QR. Najlepiej sprawdza się, gdy potrzebujesz szybkich rezultatów, a kody QR są łatwe do odczytania.

using IronQr;
using IronQr.Enum;
using IronSoftware.Drawing;
using Color = IronSoftware.Drawing.Color;

// Set the license key for IronQR
IronQr.License.LicenseKey = "License-Key";

// Load the image file that contains the QR Code
var inputImage = AnyBitmap.FromFile("QRCode.png");

// Using mixed scan mode
QrImageInput mixedScanInput = new QrImageInput(inputImage, QrScanMode.OnlyDetectionModel);
IEnumerable<QrResult> mixedScanResults = new QrReader().Read(mixedScanInput);

// Using machine learning scan mode
QrImageInput mlScanInput = new QrImageInput(inputImage, QrScanMode.OnlyDetectionModel);
IEnumerable<QrResult> mlScanResults = new QrReader().Read(mlScanInput);

// Using basic scan mode
QrImageInput basicScanInput = new QrImageInput(inputImage, QrScanMode.OnlyBasicScan);
IEnumerable<QrResult> basicScanResults = new QrReader().Read(basicScanInput);

Przeczytaj o zaawansowanych kodach QR

Zaawansowane funkcje odczytu kodów QR w IronQR zostały zaprojektowane tak, aby zapewnić kompleksowe i dopracowane podejście do skanowania i dekodowania kodów QR. Ten zestaw funkcji wykracza poza podstawowe możliwości odczytu kodów QR, zapewniając głębszy poziom interakcji i ekstrakcji danych.

using IronQr;
using IronQr.Enum;
using IronSoftware.Drawing;
using Color = IronSoftware.Drawing.Color;

// Set the license key for IronQR
IronQr.License.LicenseKey = "License-Key";

// Load the image to scan
var imageToScan = AnyBitmap.FromFile("QRCode.png");

// Prepare the image for QR code detection
QrImageInput qrInput = new QrImageInput(imageToScan);

// Initialize the QR Code reader
QrReader qrScanner = new QrReader();

// Execute QR Code reading on the provided image
IEnumerable<QrResult> scanResults = qrScanner.Read(qrInput);

// Print the value, URL, and coordinates of each QR code found in the image
foreach (QrResult qrResult in scanResults)
{
    Console.WriteLine(qrResult.Value);
    Console.WriteLine(qrResult.Url);
    foreach (IronSoftware.Drawing.PointF coordinate in qrResult.Points)
    {
        Console.WriteLine($"{coordinate.X}, {coordinate.Y}");
    }
}

Oto wynik skanowania kodu QR za pomocą IronQR:

Jak stworzyć aplikację do generowania kodów QR w C#: Rysunek 3 - Skanuj wynik kodu QR

Używamy następującego kodu QR:

Jak stworzyć aplikację do generowania kodów QR w C#: Rysunek 4 - Wprowadzanie kodu QR

Każdy obiekt QrResult zapewnia dostęp do zdekodowanych danych (Value), wszelkich osadzonych URL (Url) i współrzędnych przestrzennych (Points) kodu QR w obrębie obrazu.

Dla każdego wykrytego kodu QR IronQR oferuje szczegółowe informacje, w tym dokładną treść i wszelkie adresy URL zawarte w kodzie QR. Co więcej, biblioteka zapewnia dokładne współrzędne rogów kodu QR w obrazie (poprzez właściwość Points).

Aby utworzyć generator kodów QR przy użyciu biblioteki IronQR w aplikacji napisanej w języku C#, należy dokładnie wykonać poniższe kroki. Ten przewodnik przeprowadzi Cię przez proces konfiguracji aplikacji Windows Forms, instalacji biblioteki IronQR, pisania kodu do generowania kodu QR oraz zrozumienia wyników.

Krok 1: Utwórz aplikację dla systemu Windows w programie Visual Studio

  • Zacznij od uruchomienia programu Visual Studio na swoim komputerze.
  • Kliknij przycisk "Utwórz nowy projekt".
  • Wybierz typ projektu "Aplikacja Windows Forms". Pamiętaj, aby wybrać język C#.

Jak stworzyć aplikację do generowania kodów QR w C#: Rysunek 5 - Aplikacja Windows Forms

  • Wpisz nazwę projektu i wybierz lokalizację, w której chcesz go zapisać. Następnie na kolejnym ekranie wybierz .NET Framework. Następnie kliknij Utwórz.

Jak stworzyć aplikację do generowania kodów QR w C#: Rysunek 6 - Konfiguracja projektu

Spowoduje to utworzenie i otwarcie aplikacji Windows Forms w programie Visual Studio.

Krok 2: Zainstaluj bibliotekę IronQR

Teraz nadszedł czas, aby zainstalować bibliotekę IronQR w projekcie. Bibliotekę IronQR można zainstalować na różne sposoby. Wybierz opcję, która najbardziej Ci odpowiada:

Zainstaluj za pomocą menedżera pakietów NuGet

  • Kliknij prawym przyciskiem myszy swój projekt w Eksploratorze rozwiązań i wybierz opcję Zarządzaj pakietami NuGet.
  • Wpisz IronQR w polu wyszukiwania i naciśnij Enter.

Jak stworzyć aplikację do generowania kodów QR w C#: Rysunek 7 - Zarządzaj pakietami NuGet

  • Znajdź IronQR na liście i kliknij przycisk "Zainstaluj" obok niego.

Jak stworzyć aplikację do generowania kodów QR w C#: Rysunek 8 - Instalacja IronQR

Zainstaluj za pomocą konsoli menedżera pakietów NuGet

  • Przejdź do Narzędzia > Menedżer pakietów NuGet > Konsola menedżera pakietów.

Jak stworzyć aplikację do generowania kodów QR w C#: Rysunek 9 - Menedżer pakietów NuGet

  • Wpisz Install-Package IronQr i naciśnij Enter.

 Jak stworzyć aplikację do generowania kodów QR w C#: Rysunek 10 - Instalacja IronQR

Krok 3: Projekt interfejsu użytkownika

 Jak stworzyć aplikację do generowania kodów QR w C#: Rysunek 11 - Generator kodu QR

3.1 Nagłówek tytułu

 Jak stworzyć aplikację do generowania kodów QR w C#: Rysunek 12 - Generuj kod QR

Po uruchomieniu aplikacji QR Code Generator użytkownicy natychmiast widzą efektowny nagłówek zatytułowany "QR Generator IronQR", napisany pogrubioną i autorytatywną czcionką. Czcionka Agency FB została wybrana ze względu na jej czyste, nowoczesne linie, które oddają poczucie wydajności i precyzji. Dzięki dużej czcionce o rozmiarze 48 punktów tytuł jest zarówno widoczny, jak i wyrazisty, przyciągając uwagę użytkownika i zdecydowanie podkreślając tożsamość aplikacji.

3.2 Sekcja danych wejściowych

Wprowadzanie tekstu do kodu QR

 Jak stworzyć aplikację do generowania kodów QR w C#: Rysunek 13 - Wprowadzanie tekstu kodu QR

Sercem sekcji wprowadzania danych jest prosty, ale fundamentalny element: pole wprowadzania tekstu. W tym miejscu użytkownicy mogą wprowadzić dane, które chcą zakodować w swoim kodzie QR. Ramka jest przestronna, mieści znaczną ilość tekstu i znajduje się w widocznym miejscu u góry.

 Jak stworzyć aplikację do generowania kodów QR w C#: Rysunek 14 - Wybierz logo

Pod polem tekstowym obszar "Wybierz logo" umożliwia dodatkowe dostosowanie. Użytkownicy mogą przesłać logo, które zostanie osadzone w kodzie QR, zwiększając rozpoznawalność marki lub personalizując kod. Obok znajduje się ramka z podglądem wybranego logo, zapewniająca natychmiastową informację zwrotną.

Konfiguracja kolorów

 Jak stworzyć aplikację do generowania kodów QR w C#: Rysunek 15 - Kolor tła

W prawej części interfejsu znajdują się opcje wyboru kolorów. Dwa przyciski, jeden do wyboru koloru kodu QR, a drugi do wyboru koloru tła, pozwalają użytkownikom dostosować paletę kolorów swojego kodu QR. Pola tekstowe obok tych przycisków pokazują aktualnie wybrany kolor.

Przemyślany układ sekcji wprowadzania danych, z tekstem, logo i opcjami kolorystycznymi, odzwierciedla jasne zrozumienie priorytetów użytkownika podczas tworzenia kodu QR. Łączy funkcjonalność z elastycznością, umożliwiając użytkownikom szybkie i wydajne wprowadzanie niezbędnych informacji, a jednocześnie pozostawiając miejsce na kreatywność.

3.3 Parametry stylistyczne

 Jak stworzyć aplikację do generowania kodów QR w C#: Rysunek 16 - Stylizacja

Ustawienia wymiarów

Obok narzędzi do dostosowywania kolorów użytkownicy znajdą pole wprowadzania danych "Wymiary". To ustawienie liczbowe ma kluczowe znaczenie, ponieważ określa ogólny rozmiar kodu QR, zapewniając jego idealne dopasowanie do zamierzonego kontekstu wyświetlania, niezależnie od tego, czy jest to wizytówka, ulotka czy ekran cyfrowy.

Ustawienia marginesów

Obok pola wprowadzania wymiarów pole "Marginesy" pozwala użytkownikom określić białą przestrzeń otaczającą kod QR. Marginesy to coś więcej niż tylko kwestia estetyki; są one elementem funkcjonalnym, który może wpływać na czytelność kodu QR przez skanery. Aplikacja udostępnia użytkownikom numeryczne przyciski strzałek w górę i w dół, umożliwiające łatwą regulację tego parametru.

3.4 Podgląd wyniku

 Jak stworzyć aplikację do generowania kodów QR w C#: Rysunek 17 - Wynik QR

Gdy użytkownik zainicjuje generowanie kodu QR, dużym polu obrazu po lewej stronie formularza, oznaczonym jako "Wynik", staje się głównym punktem. Służy jako dynamiczny wyświetlacz, zapewniający podgląd wygenerowanego kodu QR w czasie rzeczywistym. Ta natychmiastowa informacja zwrotna jest niezbędna dla użytkowników, aby mogli zweryfikować swoje wybory projektowe i upewnić się, że kod QR spełnia ich oczekiwania przed zapisaniem.

3.5 Przyciski akcji

Wygeneruj kod QR

 Jak stworzyć aplikację do generowania kodów QR w C#: Rysunek 18 - Kod QR w C#

Przycisk "Generuj QR" jest kluczowym elementem sterującym w interfejsie aplikacji. Ten przycisk, umieszczony w strategicznym miejscu formularza, jest katalizatorem procesu tworzenia kodu QR. Po kliknięciu tego przycisku aplikacja pobiera wszystkie dane wejściowe i parametry stylizacji zdefiniowane przez użytkownika i rozpoczyna generowanie niestandardowego kodu QR.

Zapisz kod QR

 Jak stworzyć aplikację do generowania kodów QR w C#: Rysunek 19 - Zapisz

Po wygenerowaniu kodu QR i wyświetleniu go w obszarze podglądu wyników do akcji wkracza przycisk "Zapisz QR". Po kliknięciu otwiera się okno dialogowe zapisywania, umożliwiające użytkownikowi wybór żądanego formatu pliku i lokalizacji zapisu.

Resetuj formularz

 Jak stworzyć aplikację do generowania kodów QR w C#: Rysunek 20 - Resetuj

Jednym kliknięciem ten przycisk usuwa wszystkie poprzednie wpisy i wybory, przywracając wszystkie ustawienia do wartości domyślnych. Jest to ważny aspekt formularza, oferujący szybki sposób na ponowne zainicjowanie aplikacji bez konieczności ręcznego dostosowywania każdej opcji.

Krok 4: Napisz logikę zaplecza

4.1 Konfiguracja i inicjalizacja

Najpierw aplikacja zaczyna od włączenia niezbędnych przestrzeni nazw: IronQr i IronSoftware.Drawing. Te przestrzenie nazw są niezbędne, ponieważ zapewniają funkcje potrzebne do generowania i manipulowania kodami QR oraz kolorami w aplikacji. Zdefiniowano niestandardową klasę Color, aby ułatwić zarządzanie kolorami w generowaniu kodu QR, zastępując domyślną System.Drawing.Color, aby zapewnić zgodność z wymaganiami IronQR.

using IronQr;
using IronSoftware.Drawing;
using Color = IronSoftware.Drawing.Color;

Konstruktor klasy QR_Generator odgrywa kluczową rolę w przygotowywaniu aplikacji do użycia. To właśnie tutaj inicjowane są komponenty aplikacji, co jest standardowym krokiem w aplikacjach Windows Forms służącym do konfiguracji elementów interfejsu użytkownika formularza.

public QR_Generator()
{
    InitializeComponent();
    SetLicenseKey();
    EnsureDirectoryExists(qrCodesDirectory);
}
  • SetLicenseKey: Ta metoda jest wywoływana w celu zastosowania ważnego klucza licencyjnego dla biblioteki IronQR. Użycie klucza licencyjnego jest obowiązkowe w przypadku zastosowań komercyjnych oraz w celu odblokowania pełnych możliwości biblioteki IronQR.

  • EnsureDirectoryExists: Ze względu na potrzebę zapisywania wygenerowanych kodów QR, ta metoda zapewnia dostępność dedykowanego katalogu. Sprawdza, czy katalog "QR Codes" istnieje w ścieżce uruchamiania aplikacji, a jeśli nie, tworzy go.

4.2 Konfiguracja klucza licencyjnego

Aby zapewnić działanie IronQR bez ograniczeń, należy zastosować ważny klucz licencyjny. Jest to realizowane za pomocą metody SetLicenseKey, która jest metodą statyczną, zaprojektowaną do skonfigurowania biblioteki przy użyciu zakupionego lub trialowego klucza licencyjnego. Poniższy fragment kodu ilustruje sposób ustawiania klucza licencyjnego:

private static void SetLicenseKey()
{
    IronQr.License.LicenseKey = "YOUR_LICENSE_KEY";
}

Zastąp "YOUR_LICENSE_KEY" rzeczywistym kluczem licencyjnym, który otrzymałeś od Iron Software. Metoda jest wywoływana w konstruktorze klasy QR_Generator, zapewniając, że licencja jest stosowana zaraz po uruchomieniu aplikacji i przed rozpoczęciem jakiegokolwiek generowania kodu QR.

4.3 Zarządzanie katalogami

Aplikacja używa metody EnsureDirectoryExists, aby sprawdzić, czy określony katalog do przechowywania kodów QR istnieje. W przeciwnym razie tworzy katalog. Metoda ta przyjmuje parametr string, czyli ścieżkę katalogu do sprawdzenia lub utworzenia. Oto jak to zostało zrealizowane:

private static void EnsureDirectoryExists(string path)
{
    if (!System.IO.Directory.Exists(path))
    {
        System.IO.Directory.CreateDirectory(path);
    }
}

Metoda ta wykorzystuje przestrzeń nazw System.IO do interakcji z systemem plików. Najpierw sprawdza, czy katalog pod określoną ścieżką istnieje, używając Directory.Exists. Jeśli katalog nie istnieje (zwracany jest false), następnie tworzy katalog, używając Directory.CreateDirectory.

Ścieżka do katalogu z kodami QR jest definiowana w konstruktorze klasy QR_Generator jako qrCodesDirectory, która łączy ścieżkę startową aplikacji z nazwą folderu "QR Codes":

string qrCodesDirectory = System.IO.Path.Combine(Application.StartupPath, "QR Codes");

4.4 Wybór kolorów

Aplikacja udostępnia dwa przyciski w interfejsie użytkownika, z których każdy jest powiązany z metodą wybierania kolorów: btn_color_Click dla koloru kodu QR i btn_background_Click dla koloru tła. Metody te wykorzystują okno dialogowe kolorów, aby umożliwić użytkownikowi wybór kolorów.

Po wybraniu koloru za pomocą okna dialogowego kolorów wybrany kolor jest następnie konwertowany do formatu ciągu znaków szesnastkowych. Jest to konieczne, ponieważ biblioteka IronQR wymaga podania kolorów w formacie szesnastkowym. Konwersja odbywa się za pomocą metody ColorToHex:

private string ColorToHex(System.Drawing.Color color)
{
    return $"#{color.R:X2}{color.G:X2}{color.B:X2}";
}

Metoda UpdateColor przyjmuje wybrany kolor i konwertuje go na format IronSoftware.Drawing.Color za pomocą łańcucha szesnastkowego oraz aktualizuje kolor pierwszoplanowy lub tło kodu QR, w zależności od wyboru. Zaktualizowano również interfejs użytkownika, aby odzwierciedlić nowy wybór kolorów:

private void UpdateColor(ref Color targetColor, Control display, bool isBackground)
{
    if (select_color.ShowDialog() == DialogResult.OK)
    {
        var hexColor = ColorToHex(select_color.Color);
        targetColor = new Color(hexColor);
        display.BackColor = select_color.Color;
    }
}

Aplikacja zawiera przycisk (btn_logo_Click), który po kliknięciu otwiera okno dialogowe plików, umożliwiające użytkownikowi wybranie pliku graficznego, który ma służyć jako logo. Ta funkcja ma kluczowe znaczenie dla firm lub osób prywatnych, które chcą oznaczyć swoje kody QR marką. Oto jak przebiega proces wyboru i integracji logo:

private void btn_logo_Click(object sender, EventArgs e)
{
    if (select_logo.ShowDialog() == DialogResult.OK)
    {
        try
        {
            logoBmp = new AnyBitmap(select_logo.FileName);
            selected_logo.Image = Image.FromFile(select_logo.FileName);
        }
        catch (Exception ex)
        {
            ShowError("An error occurred while loading the logo", ex.Message);
        }
    }
}

Po pomyślnym wybraniu obrazu aplikacja próbuje go załadować i wyświetlić podgląd. Obiekt AnyBitmap, logoBmp, jest następnie ustawiany na wybrany obraz, którego później używa logika generowania kodu QR.

4.6 Generowanie kodów QR

Proces generowania rozpoczyna się, gdy użytkownik klika przycisk "Generuj", który jest powiązany z metodą btn_generate_Click. Ta metoda działa jako wyzwalacz, wywołując funkcję GenerateQRCode, gdzie znajduje się faktyczna logika generowania.

private void btn_generate_Click(object sender, EventArgs e)
{
    GenerateQRCode();
}

W ramach metody GenerateQRCode aplikacja tworzy kod QR na podstawie określonych parametrów, w tym tekstu wejściowego i opcji stylu. Metoda ta obejmuje tworzenie kodu QR, stosując wybrane kolory, wymiary, marginesy oraz, opcjonalnie, logo.

private void GenerateQRCode()
{
    try
    {
        var options = new QrOptions(QrErrorCorrectionLevel.High);
        var myQr = QrWriter.Write(txt_QR.Text, options);
        var style = CreateStyleOptions();
        var qrImage = myQr.Save(style);
        var fileName = $"{DateTime.Now:yyyyMMddHHmmssfff}_QR.png";
        var fullPath = System.IO.Path.Combine(qrCodesDirectory, fileName);
        qrImage.SaveAs(fullPath);
        pictureBox.Image = Image.FromFile(fullPath);
    }
    catch (Exception ex)
    {
        ShowError("An error occurred during QR code generation or saving", ex.Message);
    }
}

Obiekt QrOptions definiuje poziom korekcji błędów, zwiększając odporność kodu QR na uszkodzenia lub zasłonięcie. Metoda CreateStyleOptions generuje obiekt QrStyleOptions, który obejmuje niestandardowe ustawienia użytkownika, takie jak kolory, wymiary i logo. Oto szczegółowy opis metody:

private QrStyleOptions CreateStyleOptions()
{
    return new QrStyleOptions
    {
        BackgroundColor = bgColor,
        Color = color,
        Dimensions = txt_dimension.Value > 0 ? Convert.ToInt32(txt_dimension.Value) : throw new ArgumentException("Please select valid dimensions!"),
        Margins = Convert.ToInt32(txt_margin.Value),
        Logo = logoBmp != null ? new QrLogo { Bitmap = logoBmp, Width = 50, Height = 50, CornerRadius = 5 } : null
    };
}

Ta metoda tworzy obiekt QrStyleOptions, który następnie jest używany przez logikę generowania kodu QR do zastosowania preferencji użytkownika. Dostępne opcje to:

  • BackgroundColor i Color: Te właściwości ustawiają kolory tła i pierwszego planu kodu QR, pozwalając na spersonalizowany wygląd, który może pasować do marki lub preferencji estetycznych.
  • Dimensions: Ta właściwość określa rozmiar kodu QR, oferując elastyczność w jaki sposób kod QR dopasowuje się do różnych kontekstów lub mediów.
  • Margins: Ta właściwość ustawia rozmiar marginesu wokół kodu QR, zapewniając jego izolację od otaczających elementów, co może być istotne dla skalowalności.
  • Logo: Jeśli użytkownik wybrał dodanie logo, jest ono tutaj konfigurowane z określonymi wymiarami i promieniem narożnika dla wykończonego wyglądu.

4.7 Zapisywanie kodu QR

Funkcjonalność zapisu jest wyzwalana przyciskiem "Zapisz", który jest powiązany z metodą btn_save_Click. Metoda ta wywołuje SaveQRCode, która implementuje logikę zapisu. Proces obejmuje wyświetlenie okna dialogowego zapisu pliku, umożliwiającego użytkownikowi wybór formatu pliku i lokalizacji zapisu kodu QR.

private void btn_save_Click(object sender, EventArgs e)
{
    SaveQRCode();
}
private void SaveQRCode()
{
    if (pictureBox.Image == null)
    {
        MessageBox.Show("There is no QR code to save.", "Error");
        return;
    }
    saveFileDialog.Filter = "PNG Files|*.png|JPEG Files|*.jpg";
    saveFileDialog.Title = "Save QR Code";
    saveFileDialog.FileName = "QRCode";
    if (saveFileDialog.ShowDialog() == DialogResult.OK)
    {
        try
        {
            pictureBox.Image.Save(saveFileDialog.FileName, DetermineImageFormat(saveFileDialog.FileName));
            MessageBox.Show("QR Code has been saved!", "Success");
        }
        catch (Exception ex)
        {
            ShowError("An error occurred while saving the QR code", ex.Message);
        }
    }
}

Ta metoda sprawdza, czy dostępny jest wygenerowany kod QR. W takim przypadku użytkownikowi wyświetlane są opcje zapisania pliku w formacie PNG lub JPEG. Funkcja DetermineImageFormat zapewnia, że obraz jest zapisywany w odpowiednim formacie w oparciu o rozszerzenie pliku wybrane przez użytkownika.

private System.Drawing.Imaging.ImageFormat DetermineImageFormat(string filePath)
{
    return System.IO.Path.GetExtension(filePath).ToLower() == ".jpg" ? System.Drawing.Imaging.ImageFormat.Jpeg : System.Drawing.Imaging.ImageFormat.Png;
}

Ta elastyczność pozwala użytkownikom wybrać format, który najlepiej odpowiada ich potrzebom, niezależnie od tego, czy priorytetem jest jakość (PNG), czy rozmiar pliku (JPEG).

4.8 Resetowanie aplikacji

Funkcjonalność resetu jest powiązana z przyciskiem "Resetuj", który wywołuje metodę btn_reset_Click. Metoda ta z kolei wywołuje ResetFields, funkcję zaprojektowaną do usunięcia wszystkich danych wejściowych użytkownika i przywrócenia wartości domyślnych dla wszystkich ustawień, w tym pól tekstowych, wyboru kolorów i wybranego logo.

private void btn_reset_Click(object sender, EventArgs e)
{
    ResetFields();
}
private void ResetFields()
{
    txt_QR.Text = string.Empty;
    txt_dimension.Value = 200;
    txt_margin.Value = 0;
    bgColor = Color.White;
    color = Color.Black;
    txt_selected_color.BackColor = bgColor;
    txt_selected_bgcolor.BackColor = color;
    logoBmp = null;
    selected_logo.Image = null;
    pictureBox.Image = null;
}

Ta metoda resetuje każdy komponent zaangażowany w generowanie kodu QR. Na przykład usuwa tekst kodu QR, ustawia wymiary i marginesy na wartości domyślne oraz usuwa wszelkie wybrane kolory lub logo.

4.9 Obsługa błędów

Aplikacja używa metody ShowError do wyświetlania komunikatów o błędach w formie przyjaznej dla użytkownika. Ta metoda przyjmuje dwa parametry: tytuł i komunikat, które dostarczają użytkownikowi kontekstu dotyczącego błędu. Oto jak to zostało zrealizowane:

private static void ShowError(string title, string message)
{
    MessageBox.Show($"{title}: {message}", "Error");
}

Metoda ta jest wykorzystywana w różnych częściach aplikacji, aby zapewnić, że w przypadku wystąpienia błędu użytkownik zostanie niezwłocznie poinformowany za pomocą jasnego i zwięzłego komunikatu. Na przykład, jeśli podczas ładowania logo lub w trakcie procesu generowania kodu QR wystąpi błąd, aplikacja wywołuje ShowError, aby wyświetlić szczegóły dotyczące problemu.

4.10 Pełny przykład kodu

Oto pełny kod, który pomoże Ci znacznie łatwiej zrozumieć kod:

using IronQr;
using IronSoftware.Drawing;
using Color = IronSoftware.Drawing.Color;

namespace IronQR_QR_Generator_WinForms
{
    public partial class QR_Generator : Form
    {
        string qrCodesDirectory = System.IO.Path.Combine(Application.StartupPath, "QR Codes");
        Color bgColor = Color.White;
        Color color = Color.Black;
        AnyBitmap? logoBmp = null;
        public QR_Generator()
        {
            InitializeComponent();
            SetLicenseKey();
            EnsureDirectoryExists(qrCodesDirectory);
        }
        private static void SetLicenseKey()
        {
            IronQr.License.LicenseKey = "License-Key";
        }
        private static void EnsureDirectoryExists(string path)
        {
            if (!System.IO.Directory.Exists(path))
            {
                System.IO.Directory.CreateDirectory(path);
            }
        }
        private void btn_color_Click(object sender, EventArgs e)
        {
            UpdateColor(ref color, txt_selected_color, false);
        }
        private void btn_background_Click(object sender, EventArgs e)
        {
            UpdateColor(ref bgColor, txt_selected_bgcolor, true);
        }
        private string ColorToHex(System.Drawing.Color color)
        {
            return $"#{color.R:X2}{color.G:X2}{color.B:X2}";
        }
        private void UpdateColor(ref Color targetColor, Control display, bool isBackground)
        {
            if (select_color.ShowDialog() == DialogResult.OK)
            {
                var hexColor = ColorToHex(select_color.Color);
                targetColor = new Color(hexColor);
                display.BackColor = select_color.Color;
            }
        }
        private void btn_logo_Click(object sender, EventArgs e)
        {
            if (select_logo.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    logoBmp = new AnyBitmap(select_logo.FileName);
                    selected_logo.Image = Image.FromFile(select_logo.FileName);
                }
                catch (Exception ex)
                {
                    ShowError("An error occurred while loading the logo", ex.Message);
                }
            }
        }
        private void btn_generate_Click(object sender, EventArgs e)
        {
            GenerateQRCode();
        }
        private void GenerateQRCode()
        {
            try
            {
                var options = new QrOptions(QrErrorCorrectionLevel.High);
                var myQr = QrWriter.Write(txt_QR.Text, options);
                var style = CreateStyleOptions();
                var qrImage = myQr.Save(style);
                var fileName = $"{DateTime.Now:yyyyMMddHHmmssfff}_QR.png";
                var fullPath = System.IO.Path.Combine(qrCodesDirectory, fileName);
                qrImage.SaveAs(fullPath);
                pictureBox.Image = Image.FromFile(fullPath);
            }
            catch (Exception ex)
            {
                ShowError("An error occurred during QR code generation or saving", ex.Message);
            }
        }
        private QrStyleOptions CreateStyleOptions()
        {
            return new QrStyleOptions
            {
                BackgroundColor = bgColor,
                Color = color,
                Dimensions = txt_dimension.Value > 0 ? Convert.ToInt32(txt_dimension.Value) : throw new ArgumentException("Please select valid dimensions!"),
                Margins = Convert.ToInt32(txt_margin.Value),
                Logo = logoBmp != null ? new QrLogo { Bitmap = logoBmp, Width = 50, Height = 50, CornerRadius = 5 } : null
            };
        }
        private void btn_save_Click(object sender, EventArgs e)
        {
            SaveQRCode();
        }
        private void SaveQRCode()
        {
            if (pictureBox.Image == null)
            {
                MessageBox.Show("There is no QR code to save.", "Error");
                return;
            }
            saveFileDialog.Filter = "PNG Files|*.png|JPEG Files|*.jpg";
            saveFileDialog.Title = "Save QR Code";
            saveFileDialog.FileName = "QRCode";
            if (saveFileDialog.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    pictureBox.Image.Save(saveFileDialog.FileName, DetermineImageFormat(saveFileDialog.FileName));
                    MessageBox.Show("QR Code has been saved!", "Success");
                }
                catch (Exception ex)
                {
                    ShowError("An error occurred while saving the QR code", ex.Message);
                }
            }
        }
        private System.Drawing.Imaging.ImageFormat DetermineImageFormat(string filePath)
        {
            return System.IO.Path.GetExtension(filePath).ToLower() == ".jpg" ? System.Drawing.Imaging.ImageFormat.Jpeg : System.Drawing.Imaging.ImageFormat.Png;
        }
        private void btn_reset_Click(object sender, EventArgs e)
        {
            ResetFields();
        }
        private void ResetFields()
        {
            txt_QR.Text = string.Empty;
            txt_dimension.Value = 200;
            txt_margin.Value = 0;
            bgColor = Color.White;
            color = Color.Black;
            txt_selected_color.BackColor = bgColor;
            txt_selected_bgcolor.BackColor = color;
            logoBmp = null;
            selected_logo.Image = null;
            pictureBox.Image = null;
        }
        private static void ShowError(string title, string message)
        {
            MessageBox.Show($"{title}: {message}", "Error");
        }
    }
}

Krok 5: Uruchom aplikację

Po uruchomieniu aplikacji pojawia się główne okno, jak pokazano na załączonym obrazku. Układ jest przejrzyście podzielony na sekcje dotyczące wprowadzania danych, stylizacji, wyników i działań.

 Jak stworzyć aplikację do generowania kodów QR w C#: Rysunek 21 - Wynik aplikacji

Pierwszym krokiem w tym procesie jest wprowadzenie danych w polu "Wprowadź tekst QR". Dane te będą stanowić treść kodu QR, np. adres URL lub informacje tekstowe. Następnie, aby spersonalizować kod QR, wybieramy logo, klikając przycisk "Wybierz logo". Po wybraniu logo jest widoczne w polu podglądu obok przycisku, co potwierdza jego włączenie do projektu kodu QR.

 Jak stworzyć aplikację do generowania kodów QR w C#: Rysunek 22 - Logo

Po wyborze logo wybieramy kolory pierwszego planu i tła kodu QR. Po kliknięciu odpowiednich przycisków wybrane kolory pojawiają się w polach wyświetlających kolory obok każdego przycisku, co pozwala nam natychmiast wizualnie potwierdzić nasze wybory.

 Jak stworzyć aplikację do generowania kodów QR w C#: Rysunek 23 - Wybór koloru

W przypadku tego konkretnego kodu QR ustawiliśmy wymiary na 500, zapewniając rozmiar kodu odpowiedni do naszych potrzeb, oraz dostosowaliśmy marginesy do 20, co zapewnia bufor wokół kodu QR, aby zapobiec problemom ze skanowaniem.

 Jak stworzyć aplikację do generowania kodów QR w C#: Rysunek 24 - Wymiary

Po ustawieniu wszystkich danych wejściowych i opcji stylizacji przechodzimy do generowania kodu QR, klikając przycisk "Generuj QR". Aplikacja przetwarza nasze dane wejściowe i wyświetla nowo utworzony kod QR w polu obrazu wyjściowego.

 Jak stworzyć aplikację do generowania kodów QR w C#: Rysunek 25 - Odczyt wyników kodów QR

Aby zapisać wygenerowany kod QR, wystarczy kliknąć przycisk "Zapisz QR". Ta czynność otwiera okno dialogowe zapisu, umożliwiające wybór lokalizacji docelowej i formatu pliku dla obrazu kodu QR.

 Jak stworzyć aplikację do generowania kodów QR w C#: Rysunek 26 - Dialog zapisu

Po zapisaniu komunikat potwierdzający informuje, że kod QR został pomyślnie zapisany.

 Jak stworzyć aplikację do generowania kodów QR w C#: Rysunek 27 - Komunikat sukcesu

Jeśli musimy zacząć od nowa lub utworzyć nowy kod QR, kliknięcie przycisku "Resetuj formularz" przywraca formularz do stanu pierwotnego, czyszcząc wszystkie pola i zaznaczenia, przygotowując go do wygenerowania kolejnego kodu QR.

 Jak stworzyć aplikację do generowania kodów QR w C#: Rysunek 28 - Formularz resetu

Oto zapisany kod QR wygenerowany przez IronQR:

 Jak stworzyć aplikację do generowania kodów QR w C#: Rysunek 29 - Wynik kodu QR

Wnioski

Podsumowując, niniejszy przewodnik przeprowadził Cię przez proces generowania kodów QR przy użyciu biblioteki IronQR w aplikacji napisanej w języku C#. Przedstawiając poszczególne etapy, od skonfigurowania projektu w Visual Studio, przez integrację biblioteki IronQR, po zaprojektowanie przyjaznego dla użytkownika interfejsu i napisanie logiki zaplecza, pokazaliśmy, jak łatwo można dodać funkcjonalność kodów QR do swoich aplikacji.

Osobom zainteresowanym dalszym zgłębianiem możliwości IronQR warto zwrócić uwagę, że IronQR oferuje bezpłatną wersję próbną, która ułatwi rozpoczęcie pracy. Jeśli zdecydujesz się zintegrować IronQR w swoich projektach, licencje zaczynają się od $999, oferując opłacalne rozwiązanie do generowania kodów QR na poziomie profesjonalnym.

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ęczników.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta