VERWENDUNG VON IRONQR

Wie man einen QR-Code-Generator in C# erstellt

Veröffentlicht 20. Mai 2024
Teilen Sie:

Willkommen bei unserem Leitfaden zur Erstellung vonQR-Codes mit C#! QR-Codes und .NET Barcode DLL sind zu beliebten Mitteln geworden, um Informationen schnell und effizient weiterzugeben. Ganz gleich, ob Sie eine App entwickeln, eine Website verwalten oder einfach nur nach einer Möglichkeit suchen, Links zu teilen - diese Codes können unglaublich nützlich sein. In dieser Anleitung zeigen wir Ihnen, wie Sie QR-Codes effizient mitIronQRso können Sie einen auf Ihre Bedürfnisse zugeschnittenen QR-Code erstellen. Diese Bibliothek macht es für jeden, der mit C# arbeitet, einfach, QR-Codes zu erstellen, ohne sich mit komplexer Logik auseinandersetzen zu müssen. Wir führen Sie durch die einzelnen Schritte und stellen sicher, dass Sie alles haben, was Sie brauchen, um loszulegen. Egal, ob Sie Ihrer App die Funktion eines QR-Code-Generators hinzufügen möchten oder einfach nur neugierig sind, wie das geht - hier sind Sie richtig. Fangen wir an.

Wie man einen QR Code Generator in C# erstellt;

  1. Erstellen einer Windows Forms-Anwendung in Visual Studio

  2. QR-Bibliothek mit NuGet installieren

  3. Gestaltung der Frontend-Elemente des Formulars

  4. Schreiben Sie die Logik der QR-Generierung5. Starten Sie die Anwendung und beginnen Sie mit der Erstellung von QR-Codes

IronQR: C# QR-Bibliothek

IronQR ist eine C# QR-Code-Bibliothek zur Integration von QR-Code-Funktionen in .NET-Anwendungen. IronQR unterstützt eine Vielzahl von .NET-Versionen und -Projekttypen, einschließlich C#, VB.NET, F#, .NET Core, .NET-Standard, .NET-Framework und mehr, und gewährleistet so die Kompatibilität mit verschiedenen Entwicklungsumgebungen wie Windows, Linux, macOS, iOS und Android.

IronQR zeichnet sich durch seine fortschrittlichen Funktionen aus, darunter die MöglichkeitqR-Codes lesen undqR-Codes erzeugenunterstützung für mehrere Bildformate und Anpassungsoptionen wie Größenänderung, Styling und Hinzufügen von Logos zu QR-Codes.

Einige Hauptmerkmale von IronQR

IronQR geht in seiner Funktionalität über die einfache QR-Code-Generierung hinaus und bietet mehrere Funktionen, die für eine Vielzahl von QR-Code-bezogenen Aufgaben entwickelt wurden. Schauen wir uns diese Funktionen an und prüfen Sie die Beispielcodes, die Sie in jede Art von .NET-Anwendungsvorlage wie Konsolenanwendungen integrieren können.

QR-Codes lesen

IronQR zeichnet sich durch die Dekodierung von QR-Codes aus und bietet den Benutzern eine einfache Möglichkeit, auf die in QR-Codes eingebetteten Informationen zuzugreifen. Sie können schnell und präzise Daten aus QR-Codes extrahieren, von einfachen URLs bis hin zu komplexen eingebetteten Informationen.

using IronQr;
using IronSoftware.Drawing;
using Color = IronSoftware.Drawing.Color;
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);
// Assuming you have the QR results in qrResults as before
foreach (var result in qrResults)
{
    Console.WriteLine(result.Value); // Print the QR code content to the console
}
using IronQr;
using IronSoftware.Drawing;
using Color = IronSoftware.Drawing.Color;
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);
// Assuming you have the QR results in qrResults as before
foreach (var result in qrResults)
{
    Console.WriteLine(result.Value); // Print the QR code content to the console
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Wir verwenden den folgenden QR-Code zum Scannen:

Wie man eine QR-Code-Generator-Anwendung in C# erstellt: Abbildung 1 - QR Code PNG Image File

Und wir erhielten diese Ausgabe:

Wie man eine QR-Code-Generator-Anwendung in C# erstellt: Abbildung 2 - QR-Code-Ausgabe lesen

Der Prozess beginnt mit der Einbeziehung der notwendigen Namensräume, IronQr und IronSoftware.Drawing, mit einer speziellen Erwähnung von Color aus dem IronSoftware.Drawing Namensraum, um Bildmanipulationen zu handhaben.

Bevor Sie mit dem Lesen des QR-Codes beginnen, müssen Sie die Software mit Ihrem Lizenzschlüssel aktivieren, indem Sie ihn IronQR.License.LicenseKey" zuweisen. Der Code lädt dann das QR-Code-Bild aus einer Datei mit AnyBitmap.FromFile("QRCode.png").

Nachdem das Bild geladen wurde, muss es im nächsten Schritt für die QR-Code-Erkennung vorbereitet werden. Diese Vorbereitung erfolgt durch die Erstellung eines QrImageInput-Objekts, das als Container für das Bild dient.

Der Kern dieser Funktion liegt in der Klasse QrReader, die instanziiert und zum Lesen von QR-Codes verwendet wird. Das Lesegerät analysiert das vorbereitete Bild, qrInput, und sucht nach allen darin enthaltenen QR-Codes. Das Ergebnis dieser Operation ist eine Sammlung von "QRResult"-Objekten, die jeweils einen erkannten QR-Code im Bild darstellen.

Um auf die in den QR-Codes kodierten Daten zuzugreifen und sie zu nutzen, durchläuft der Code die Sammlung der Ergebnisse in einer foreach-Schleife. Jedes "QrResult"-Objekt enthält Eigenschaften wie den Wert des QR-Codes, auf den zugegriffen und der angezeigt werden kann.

Benutzerdefinierte QR-Lesemodus-Optionen

IronQR bietet Ihnen verschiedene Möglichkeiten, QR-Codes aus Bildern zu lesen, und ist somit vielseitig einsetzbar. Eine Option ist der Mixed Scan Mode, der ein Gleichgewicht zwischen Geschwindigkeit und Genauigkeit herstellt und nützlich ist, wenn QR-Codes nicht eindeutig sind oder teilweise verdeckt werden.

Eine andere ist das Maschinelle Lernen(ML) Scan-Modus, der intelligente Technologie verwendet, um QR-Codes zu lesen, die beschädigt oder normalerweise nicht leicht zu lesen sind. Dieser Modus ist ideal für schwierige Situationen, in denen QR-Codes schwer zu erkennen sind.

Schließlich gibt es noch den Basic Scan Mode, der die schnellste und einfachste Art ist, klare und einfache QR-Codes zu scannen. Es ist am besten, wenn Sie schnelle Ergebnisse benötigen und die QR-Codes leicht zu lesen sind.

using IronQr;
using IronQr.Enum;
using IronSoftware.Drawing;
using Color = IronSoftware.Drawing.Color;
IronQr.License.LicenseKey = "License-Key";
// Load the image file that contains the QR Code
var inputImage = AnyBitmap.FromFile("QRCode.png");
QrImageInput mixedScanInput = new QrImageInput(inputImage, QrScanMode.OnlyDetectionModel);
IEnumerable<QrResult> mixedScanResults = new QrReader().Read(mixedScanInput);
QrImageInput mlScanInput = new QrImageInput(inputImage, QrScanMode.OnlyDetectionModel);
IEnumerable<QrResult> mlScanResults = new QrReader().Read(mlScanInput);
QrImageInput basicScanInput = new QrImageInput(inputImage, QrScanMode.OnlyBasicScan);
IEnumerable<QrResult> basicScanResults = new QrReader().Read(basicScanInput);
using IronQr;
using IronQr.Enum;
using IronSoftware.Drawing;
using Color = IronSoftware.Drawing.Color;
IronQr.License.LicenseKey = "License-Key";
// Load the image file that contains the QR Code
var inputImage = AnyBitmap.FromFile("QRCode.png");
QrImageInput mixedScanInput = new QrImageInput(inputImage, QrScanMode.OnlyDetectionModel);
IEnumerable<QrResult> mixedScanResults = new QrReader().Read(mixedScanInput);
QrImageInput mlScanInput = new QrImageInput(inputImage, QrScanMode.OnlyDetectionModel);
IEnumerable<QrResult> mlScanResults = new QrReader().Read(mlScanInput);
QrImageInput basicScanInput = new QrImageInput(inputImage, QrScanMode.OnlyBasicScan);
IEnumerable<QrResult> basicScanResults = new QrReader().Read(basicScanInput);
Imports IronQr
Imports IronQr.Enum
Imports IronSoftware.Drawing
Imports Color = IronSoftware.Drawing.Color
IronQr.License.LicenseKey = "License-Key"
' Load the image file that contains the QR Code
Dim inputImage = AnyBitmap.FromFile("QRCode.png")
Dim mixedScanInput As New QrImageInput(inputImage, QrScanMode.OnlyDetectionModel)
Dim mixedScanResults As IEnumerable(Of QrResult) = (New QrReader()).Read(mixedScanInput)
Dim mlScanInput As New QrImageInput(inputImage, QrScanMode.OnlyDetectionModel)
Dim mlScanResults As IEnumerable(Of QrResult) = (New QrReader()).Read(mlScanInput)
Dim basicScanInput As New QrImageInput(inputImage, QrScanMode.OnlyBasicScan)
Dim basicScanResults As IEnumerable(Of QrResult) = (New QrReader()).Read(basicScanInput)
VB   C#

QR-Codes im Voraus lesen

Die fortschrittlichen QR-Code-Lesefunktionen von IronQR sind so konzipiert, dass sie einen umfassenden und differenzierten Ansatz für das Scannen und Dekodieren von QR-Codes bieten. Dieser Funktionsumfang geht über die grundlegenden QR-Code-Lesefunktionen hinaus und bietet eine tiefere Ebene der Interaktion und Datenextraktion.

using IronQr;
using IronQr.Enum;
using IronSoftware.Drawing;
using Color = IronSoftware.Drawing.Color;
IronQr.License.LicenseKey = "License-Key";
var imageToScan = AnyBitmap.FromFile("QRCode.png");
QrImageInput qrInput = new QrImageInput(imageToScan);
QrReader qrScanner = new QrReader();
IEnumerable<QrResult> scanResults = qrScanner.Read(qrInput);
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}");
    }
}
using IronQr;
using IronQr.Enum;
using IronSoftware.Drawing;
using Color = IronSoftware.Drawing.Color;
IronQr.License.LicenseKey = "License-Key";
var imageToScan = AnyBitmap.FromFile("QRCode.png");
QrImageInput qrInput = new QrImageInput(imageToScan);
QrReader qrScanner = new QrReader();
IEnumerable<QrResult> scanResults = qrScanner.Read(qrInput);
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}");
    }
}
Imports IronQr
Imports IronQr.Enum
Imports IronSoftware.Drawing
Imports Color = IronSoftware.Drawing.Color
IronQr.License.LicenseKey = "License-Key"
Dim imageToScan = AnyBitmap.FromFile("QRCode.png")
Dim qrInput As New QrImageInput(imageToScan)
Dim qrScanner As New QrReader()
Dim scanResults As IEnumerable(Of QrResult) = qrScanner.Read(qrInput)
For Each qrResult As QrResult In scanResults
	Console.WriteLine(qrResult.Value)
	Console.WriteLine(qrResult.Url)
	For Each coordinate As IronSoftware.Drawing.PointF In qrResult.Points
		Console.WriteLine($"{coordinate.X}, {coordinate.Y}")
	Next coordinate
Next qrResult
VB   C#

Dies ist die Ausgabe, wenn wir den QR-Code mit IronQR scannen:

Wie man eine QR-Code-Generator-Anwendung in C# erstellt: Abbildung 3 - QR-Code scannen Ausgabe

Wir verwenden den folgenden QR-Code:

Wie man eine QR-Code-Generator-Anwendung in C# erstellt: Abbildung 4 - QR Code Eingabe

Jedes "QrResult"-Objekt ermöglicht den Zugriff auf die dekodierten Daten(Wert)alle eingebetteten URLs(Url)und die Raumkoordinaten(punkte) des QR-Codes innerhalb des Bildes.

Für jeden erkannten QR-Code bietet IronQR detaillierte Informationen, einschließlich des genauen Inhalts und aller im QR-Code enthaltenen URLs. Außerdem liefert die Bibliothek die genauen Koordinaten der Ecken des QR-Codes im Bild(durch die Eigenschaft "Punkte").

Um einen QR-Code-Generator mit der IronQR-Bibliothek für QR-Codes in einer C#-Anwendung zu erstellen, befolgen Sie diese Schritte sorgfältig. Dieser Leitfaden führt Sie durch das Einrichten einer Windows-Formularanwendung, die Installation der IronQR-Bibliothek, das Schreiben des Codes zum Generieren eines QR-Codes und das Verstehen der Ausgabe.

Schritt 1: Erstellen einer Windows-Anwendung in Visual Studio

  • Starten Sie zunächst Visual Studio auf Ihrem Computer.
  • Klicken Sie auf die Schaltfläche "Ein neues Projekt erstellen".
  • Wählen Sie als Projekttyp Windows Forms App. Stellen Sie sicher, dass Sie C# als Sprache wählen.

    Wie man eine QR Code Generator Anwendung in C# erstellt: Abbildung 5 - Windows Forms-Anwendung

  • Geben Sie einen Namen für Ihr Projekt ein und wählen Sie den Speicherort. Wählen Sie dann auf dem nächsten Bildschirm .NET-Framework aus. Klicken Sie dann auf Erstellen.

    Wie man eine QR-Code-Generator-Anwendung in C# erstellt: Abbildung 6 - Projektkonfiguration

    Es wird eine Windows Forms-Anwendung in Visual Studio erstellt und geöffnet.

Schritt 2: IronQR-Bibliothek installieren

Nun ist es an der Zeit, die IronQR-Bibliothek in das Projekt zu installieren. Sie können die IronQR-Bibliothek mit verschiedenen Methoden installieren. Wählen Sie eine, die Ihren Vorlieben entspricht:

Installation mit NuGet Package Manager

  • Klicken Sie mit der rechten Maustaste auf Ihr Projekt im Projektmappen-Explorer und wählen Sie NuGet-Pakete verwalten.
  • Geben Sie IronQR in das Suchfeld ein und drücken Sie die Eingabetaste.

    Wie man eine QR Code Generator Anwendung in C# erstellt: Abbildung 7 - Verwalten von NuGet-Paketen

  • Suchen Sie IronQR in der Liste und klicken Sie daneben auf Installieren.

    Wie man eine QR-Code-Generator-Anwendung in C# erstellt: Abbildung 8 - IronQR installieren

Installation über die NuGet-Paketmanager-Konsole

  • Gehen Sie zu Tools > NuGet Package Manager > Package Manager Console.

    Wie man eine QR-Code-Generator-Anwendung in C# erstellt: Abbildung 9 - NuGet-Paketmanager

  • Geben Sie Install-Package IronQR ein und drücken Sie die Eingabetaste.

    Wie man eine QR-Code-Generator-Anwendung in C# erstellt: Abbildung 10 - IronQR installieren

Schritt 3: Frontend gestalten

Wie man eine QR-Code-Generator-Anwendung in C# erstellt: Abbildung 11 - QR-Code-Generator

3.1 Titel Kopfzeile

Wie man eine QR-Code-Generator-Anwendung in C# erstellt: Abbildung 12 - Generieren eines QR-Codes

Beim Starten der QR-Code-Generator-Anwendung wird dem Benutzer sofort eine auffällige Kopfzeile mit dem Titel "QR Generator IronQR" angezeigt, die in einer fetten und maßgeblichen Schriftart gehalten ist. Die Schrift Agency FB wurde aufgrund ihrer klaren, modernen Linien ausgewählt, die ein Gefühl von Effizienz und Präzision vermitteln. Mit einer Schriftgröße von 48 Punkt ist der Titel sowohl auffällig als auch aussagekräftig und zieht die Aufmerksamkeit des Benutzers auf sich, so dass die Identität der Anwendung klar erkennbar ist.

3.2 Eingangsbereich

Texteingabe für QR-Code

Wie man eine QR-Code-Generator-Anwendung in C# erstellt: Abbildung 13 - QR-Code Texteingabe

Das Herzstück des Eingabebereichs ist eine einfache, aber grundlegende Komponente: das Texteingabefeld. Hier können die Nutzer die Daten eingeben, die sie in ihrem QR-Code kodieren möchten. Der Kasten ist geräumig, bietet Platz für eine große Menge Text und ist an prominenter Stelle im oberen Bereich platziert.

Logo-Auswahl

Wie man eine QR-Code-Generator-Anwendung in C# erstellt: Abbildung 14 - Logo auswählen

Unterhalb der Texteingabe ermöglicht der Bereich "Logo auswählen" eine zusätzliche Ebene der Anpassung. Benutzer können ein Logo hochladen, das in den QR-Code eingebettet wird, um die Markenerkennung zu verbessern oder den Code zu personalisieren. Das nebenstehende Bildfeld zeigt eine Vorschau des ausgewählten Logos und bietet ein unmittelbares visuelles Feedback.

Farbe Konfiguration

Wie man einen QR Code Generator in C# erstellt: Abbildung 15 - Hintergrundfarbe

Auf der rechten Seite finden Sie die Optionen für die Farbauswahl. Zwei Schaltflächen, eine für die Farbe des QR-Codes und eine weitere für die Hintergrundfarbe, ermöglichen es dem Benutzer, die Palette seines QR-Codes anzupassen. Die Textfelder neben diesen Schaltflächen zeigen die aktuell ausgewählte Farbe an.

Das durchdachte Layout des Eingabebereichs mit seinen Text-, Logo- und Farboptionen spiegelt ein klares Verständnis der Benutzerprioritäten bei der Erstellung eines QR-Codes wider. Es verbindet Funktionalität mit Flexibilität und ermöglicht es den Benutzern, die erforderlichen Informationen schnell und effizient einzugeben, bietet aber auch Raum für Kreativität.

3.3 Parameter für die Gestaltung

Wie man eine QR-Code-Generator-Anwendung in C# erstellt: Abbildung 16 - Styling

Maßeinstellungen

Neben den Werkzeugen zur Farbanpassung finden die Benutzer die Eingabe für "Abmessungen" Diese numerische Einstellung ist entscheidend, da sie die Gesamtgröße des QR-Codes bestimmt und sicherstellt, dass er perfekt in den vorgesehenen Anzeigekontext passt, sei es eine Visitenkarte, ein Flyer oder ein digitaler Bildschirm.

Margin-Einstellungen

Neben der Dimensionseingabe ermöglicht das Feld "Ränder" die Angabe des Leerraums, der den QR-Code umgibt. Die Ränder sind nicht nur eine ästhetische Entscheidung, sondern auch ein funktionales Element, das die Lesbarkeit des QR-Codes durch Scanner beeinflussen kann. Die Anwendung bietet eine numerische Aufwärts-/Abwärtssteuerung, mit der der Benutzer diesen Parameter leicht einstellen kann.

3.4 Ausgabevorschau

Wie man eine QR-Code-Generator-Anwendung in C# erstellt: Abbildung 17 - QR-Ausgabe

Sobald der Benutzer die QR-Code-Generierung initiiert hat, rückt das große Bildfeld auf der linken Seite des Formulars, das mit "Output" beschriftet ist, in den Mittelpunkt. Sie dient als dynamische Anzeige, die eine Echtzeit-Vorschau des generierten QR-Codes bietet. Dieses unmittelbare visuelle Feedback ist für die Nutzer wichtig, um ihre Designentscheidungen zu überprüfen und sicherzustellen, dass der QR-Code ihren Erwartungen entspricht, bevor sie ihn speichern.

3.5 Aktionsschaltflächen

QR generieren

Wie man eine QR-Code-Generator-Anwendung in C# erstellt: Abbildung 18 - QR-Code in C#

Die Schaltfläche "QR generieren" ist ein zentrales Bedienelement in der Anwendungsoberfläche. Diese Schaltfläche ist strategisch innerhalb des Formulars positioniert und dient als Katalysator für den Erstellungsprozess des QR-Codes. Wenn Sie auf diese Schaltfläche klicken, übernimmt die Anwendung alle vom Benutzer definierten Eingabedaten und Styling-Parameter und beginnt mit der Erstellung eines benutzerdefinierten QR-Codes.

QR-Code speichern

Wie man eine QR-Code-Generator-Anwendung in C# erstellt: Abbildung 19 - Speichern

Sobald ein QR-Code generiert wurde und im Ausgabevorschaubereich angezeigt wird, kommt die Schaltfläche "QR speichern" ins Spiel. Wenn Sie darauf klicken, öffnet sich ein Speicherdialog, in dem der Benutzer das gewünschte Dateiformat und den Speicherort auswählen kann.

Formular zurücksetzen

Wie man eine QR-Code-Generator-Anwendung in C# erstellt: Abbildung 20 - Zurücksetzen

Mit einem einzigen Klick auf diese Schaltfläche werden alle vorherigen Eingaben und Auswahlen gelöscht und alle Einstellungen auf ihre Standardwerte zurückgesetzt. Es ist ein wichtiger Aspekt des Formulars, da es eine schnelle Möglichkeit bietet, die Anwendung neu zu initialisieren, ohne jede Option manuell anpassen zu müssen.

Schritt 4: Backend-Logik schreiben

4.1 Einrichtung und Initialisierung

Zunächst beginnt die Anwendung mit der Aufnahme der erforderlichen Namensräume: IronQR und IronSoftware.Drawing. Diese Namespaces sind unerlässlich, da sie die Funktionen bereitstellen, die zur Erzeugung und Bearbeitung von QR-Codes und Farben innerhalb der Anwendung erforderlich sind. Die benutzerdefinierte Klasse Color ist definiert, um das Farbmanagement bei der QR-Code-Generierung zu erleichtern. Sie überschreibt die Standardklasse System.Drawing.Color, um die Kompatibilität mit den Anforderungen von IronQR sicherzustellen.

using IronQr;
using IronSoftware.Drawing;
using Color = IronSoftware.Drawing.Color;
using IronQr;
using IronSoftware.Drawing;
using Color = IronSoftware.Drawing.Color;
Imports IronQr
Imports IronSoftware.Drawing
Imports Color = IronSoftware.Drawing.Color
VB   C#

Der Konstruktor für die Klasse QR_Generator spielt eine entscheidende Rolle bei der Vorbereitung der Anwendung für den Einsatz. Hier werden die Komponenten der Anwendung initialisiert, was ein Standardschritt in Windows Forms-Anwendungen ist, um die UI-Elemente des Formulars einzurichten.

public QR_Generator()
{
    InitializeComponent();
    SetLicenseKey();
    EnsureDirectoryExists(qrCodesDirectory);
}
public QR_Generator()
{
    InitializeComponent();
    SetLicenseKey();
    EnsureDirectoryExists(qrCodesDirectory);
}
'INSTANT VB WARNING: The following constructor is declared outside of its associated class:
'ORIGINAL LINE: public QR_Generator()
Public Sub New()
	InitializeComponent()
	SetLicenseKey()
	EnsureDirectoryExists(qrCodesDirectory)
End Sub
VB   C#

SetLicenseKey: Diese Methode wird aufgerufen, um einen gültigen Lizenzschlüssel für die IronQR-Bibliothek anzuwenden. Die Verwendung eines Lizenzschlüssels ist für kommerzielle Anwendungen und zur Freischaltung des vollen Funktionsumfangs der IronQR-Bibliothek erforderlich.

sicherstellen, dass das Verzeichnis vorhanden ist": Da die erzeugten QR-Codes gespeichert werden müssen, stellt diese Methode sicher, dass ein entsprechendes Verzeichnis vorhanden ist. Es prüft, ob das Verzeichnis "QR Codes" im Startpfad der Anwendung vorhanden ist, und erstellt es, wenn dies nicht der Fall ist.

4.2 Lizenzschlüssel-Konfiguration

Um sicherzustellen, dass IronQR ohne Einschränkungen funktioniert, muss ein gültiger Lizenzschlüssel verwendet werden. Dies wird durch die Methode SetLicenseKey erreicht, die eine statische Methode ist, um die Bibliothek mit Ihrem gekauften oder Testlizenzschlüssel zu konfigurieren. Das folgende Codeschnipsel veranschaulicht, wie Sie den Lizenzschlüssel festlegen:

private static void SetLicenseKey()
{
    IronQr.License.LicenseKey = "YOUR_LICENSE_KEY";
}
private static void SetLicenseKey()
{
    IronQr.License.LicenseKey = "YOUR_LICENSE_KEY";
}
Private Shared Sub SetLicenseKey()
	IronQr.License.LicenseKey = "YOUR_LICENSE_KEY"
End Sub
VB   C#

Ersetzen Sie "YOUR\_LICENSE\_KEY" durch den tatsächlichen Lizenzschlüssel, den Sie von Iron Software erhalten haben. Die Methode wird im Konstruktor der Klasse QR_Generator aufgerufen, um sicherzustellen, dass die Lizenz angewendet wird, sobald die Anwendung startet und bevor eine QR-Code-Generierung stattfindet.

4.3 Verzeichnisverwaltung

Die Anwendung verwendet die Methode EnsureDirectoryExists, um zu prüfen, ob das angegebene Verzeichnis zum Speichern von QR-Codes existiert. Wenn nicht, wird das Verzeichnis erstellt. Diese Methode nimmt einen String-Parameter entgegen, der den Pfad des zu prüfenden oder zu erstellenden Verzeichnisses angibt. So wird es umgesetzt:

private static void EnsureDirectoryExists(string path)
{
    if (!System.IO.Directory.Exists(path))
    {
        System.IO.Directory.CreateDirectory(path);
    }
}
private static void EnsureDirectoryExists(string path)
{
    if (!System.IO.Directory.Exists(path))
    {
        System.IO.Directory.CreateDirectory(path);
    }
}
Private Shared Sub EnsureDirectoryExists(ByVal path As String)
	If Not System.IO.Directory.Exists(path) Then
		System.IO.Directory.CreateDirectory(path)
	End If
End Sub
VB   C#

Diese Methode verwendet den System.IO-Namensraum, um mit dem Dateisystem zu interagieren. Zuerst wird mit Directory.Exists geprüft, ob das Verzeichnis am angegebenen Pfad existiert. Wenn das Verzeichnis nicht existiert(false" wird zurückgegeben)wird das Verzeichnis mit Directory.CreateDirectory erstellt.

Der Pfad zum QR-Codes-Verzeichnis wird im Konstruktor der Klasse QR_Generator als qrCodesDirectory definiert, der den Startpfad der Anwendung mit einem "QR-Codes"-Ordnernamen kombiniert:

string qrCodesDirectory = System.IO.Path.Combine(Application.StartupPath, "QR Codes");
string qrCodesDirectory = System.IO.Path.Combine(Application.StartupPath, "QR Codes");
Dim qrCodesDirectory As String = System.IO.Path.Combine(Application.StartupPath, "QR Codes")
VB   C#

4.4 Farbauswahl

Die Anwendung bietet zwei Schaltflächen auf der Benutzeroberfläche, die jeweils mit einer Methode zur Auswahl von Farben verbunden sind: btn\_color\_Click für die QR-Code-Farbe und btn\_background\_Click für die Hintergrundfarbe. Diese Methoden nutzen ein Farbdialogfeld, in dem der Benutzer Farben auswählen kann.

Wenn eine Farbe über das Farbdialogfeld ausgewählt wird, wird die gewählte Farbe in ein hexadezimales String-Format umgewandelt. Dies ist notwendig, da die IronQR-Bibliothek die Angabe von Farben im Hexadezimalformat verlangt. Die Umwandlung erfolgt durch die Methode "ColorToHex":

private string ColorToHex(System.Drawing.Color color)
{
    return $"#{color.R:X2}{color.G:X2}{color.B:X2}";
}
private string ColorToHex(System.Drawing.Color color)
{
    return $"#{color.R:X2}{color.G:X2}{color.B:X2}";
}
Private Function ColorToHex(ByVal color As System.Drawing.Color) As String
	Return $"#{color.R:X2}{color.G:X2}{color.B:X2}"
End Function
VB   C#

Die Methode UpdateColor nimmt die ausgewählte Farbe und konvertiert sie in das IronSoftware.Drawing.Color-Format unter Verwendung der hexadezimalen Zeichenkette und aktualisiert entweder die Vorder- oder Hintergrundfarbe des QR-Codes, je nach Auswahl. Außerdem wird die Benutzeroberfläche aktualisiert, um die neue Farbauswahl widerzuspiegeln:

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 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 Sub UpdateColor(ByRef targetColor As Color, ByVal display As Control, ByVal isBackground As Boolean)
	If select_color.ShowDialog() = DialogResult.OK Then
		Dim hexColor = ColorToHex(select_color.Color)
		targetColor = New Color(hexColor)
		display.BackColor = select_color.Color
	End If
End Sub
VB   C#

4.5 Hinzufügen eines Logos

Die Anwendung enthält eine Schaltfläche(btn_logo_Click) die, wenn sie angeklickt wird, ein Dateidialogfeld öffnet, in dem der Benutzer eine Bilddatei auswählen kann, die als Logo verwendet werden soll. Diese Funktion ist entscheidend für Unternehmen oder Privatpersonen, die ihre QR-Codes mit einem Markenzeichen versehen wollen. So wird der Prozess der Logoauswahl und -integration gehandhabt:

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_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 Sub btn_logo_Click(ByVal sender As Object, ByVal e As EventArgs)
	If select_logo.ShowDialog() = DialogResult.OK Then
		Try
			logoBmp = New AnyBitmap(select_logo.FileName)
			selected_logo.Image = Image.FromFile(select_logo.FileName)
		Catch ex As Exception
			ShowError("An error occurred while loading the logo", ex.Message)
		End Try
	End If
End Sub
VB   C#

Nach erfolgreicher Auswahl eines Bildes versucht die Anwendung, es zu laden und eine Vorschau anzuzeigen. Das Objekt AnyBitmap, logoBmp, wird dann mit dem ausgewählten Bild versehen, das später von der QR-Generierungslogik verwendet wird.

4.6 QR-Code-Erzeugung

Der Generierungsprozess beginnt, wenn der Benutzer auf die Schaltfläche "Generieren" klickt, die mit der Methode "btn_generate_Click" verknüpft ist. Diese Methode fungiert als Auslöser und ruft die Funktion "GenerateQRCode" auf, in der sich die eigentliche Generierungslogik befindet.

private void btn_generate_Click(object sender, EventArgs e)
{
    GenerateQRCode();
}
private void btn_generate_Click(object sender, EventArgs e)
{
    GenerateQRCode();
}
Private Sub btn_generate_Click(ByVal sender As Object, ByVal e As EventArgs)
	GenerateQRCode()
End Sub
VB   C#

Mit der Methode "GenerateQRCode" erstellt die Anwendung einen QR-Code auf der Grundlage der angegebenen Parameter, einschließlich des Eingabetextes und der Stiloptionen. Die Methode umfasst die Erstellung eines QR-Codes unter Anwendung der ausgewählten Farben, Abmessungen, Ränder und optional eines Logos.

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 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 Sub GenerateQRCode()
	Try
		Dim options = New QrOptions(QrErrorCorrectionLevel.High)
		Dim myQr = QrWriter.Write(txt_QR.Text, options)
		Dim style = CreateStyleOptions()
		Dim qrImage = myQr.Save(style)
		Dim fileName = $"{DateTime.Now:yyyyMMddHHmmssfff}_QR.png"
		Dim fullPath = System.IO.Path.Combine(qrCodesDirectory, fileName)
		qrImage.SaveAs(fullPath)
		pictureBox.Image = Image.FromFile(fullPath)
	Catch ex As Exception
		ShowError("An error occurred during QR code generation or saving", ex.Message)
	End Try
End Sub
VB   C#

Das Objekt QrOptions definiert die Fehlerkorrekturstufe, die die Widerstandsfähigkeit des QR-Codes gegenüber Beschädigungen oder Unklarheiten erhöht. Die Methode CreateStyleOptions erzeugt ein QrStyleOptions-Objekt, das die benutzerdefinierten Einstellungen wie Farben, Abmessungen und das Logo enthält. Hier ist die Methode im Detail:

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 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 Function CreateStyleOptions() As QrStyleOptions
'INSTANT VB TODO TASK: Throw expressions are not converted by Instant VB:
'ORIGINAL LINE: 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 };
	Return New QrStyleOptions With {
		.BackgroundColor = bgColor,
		.Color = color,
		.Dimensions = If(txt_dimension.Value > 0, Convert.ToInt32(txt_dimension.Value), throw New ArgumentException("Please select valid dimensions!")),
		.Margins = Convert.ToInt32(txt_margin.Value),
		.Logo = If(logoBmp IsNot Nothing, New QrLogo With {
			.Bitmap = logoBmp,
			.Width = 50,
			.Height = 50,
			.CornerRadius = 5
		}, Nothing)
	}
End Function
VB   C#

Diese Methode erstellt ein QrStyleOptions-Objekt, das dann von der Logik der QR-Code-Generierung verwendet wird, um die Präferenzen des Benutzers anzuwenden. Die Optionen umfassen:

  • BackgroundColor und Color: Diese Eigenschaften legen die Hintergrund- und Vordergrundfarben des QR-Codes fest und ermöglichen so ein individuelles Aussehen, das dem Branding oder ästhetischen Vorlieben entspricht.
  • Dimensionen: Diese Eigenschaft bestimmt die Größe des QR-Codes und bietet Flexibilität bei der Einbindung des QR-Codes in verschiedene Kontexte oder Medien.
  • Margins: Diese Eigenschaft legt die Größe des Randes um den QR-Code fest und sorgt dafür, dass er von den umgebenden Elementen isoliert ist, was für die Skalierbarkeit entscheidend sein kann.
  • Logo`: Wenn der Benutzer ein Logo ausgewählt hat, wird es hier mit bestimmten Abmessungen und einem Eckenradius konfiguriert, um ein ansprechendes Aussehen zu erzielen.

4.7 Speichern des QR-Codes

Die Speicherfunktion wird durch die Schaltfläche "Speichern" ausgelöst, die mit der Methode "btn_save_Click" verknüpft ist. Diese Methode ruft SaveQRCode auf, der die Speicherlogik implementiert. Dabei wird ein Dialogfeld zum Speichern der Datei angezeigt, in dem der Benutzer das Dateiformat und den Speicherort für den QR-Code auswählen kann.

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 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 Sub btn_save_Click(ByVal sender As Object, ByVal e As EventArgs)
	SaveQRCode()
End Sub
Private Sub SaveQRCode()
	If pictureBox.Image Is Nothing Then
		MessageBox.Show("There is no QR code to save.", "Error")
		Return
	End If
	saveFileDialog.Filter = "PNG Files *.png JPEG Files *.jpg"
	saveFileDialog.Title = "Save QR Code"
	saveFileDialog.FileName = "QRCode"
	If saveFileDialog.ShowDialog() = DialogResult.OK Then
		Try
			pictureBox.Image.Save(saveFileDialog.FileName, DetermineImageFormat(saveFileDialog.FileName))
			MessageBox.Show("QR Code has been saved!", "Success")
		Catch ex As Exception
			ShowError("An error occurred while saving the QR code", ex.Message)
		End Try
	End If
End Sub
VB   C#

Diese Methode prüft, ob ein generierter QR-Code vorhanden ist. Ist dies der Fall, wird dem Benutzer die Möglichkeit geboten, die Datei im PNG- oder JPEG-Format zu speichern. Die Funktion DetermineImageFormat stellt sicher, dass das Bild im richtigen Format auf der Grundlage der vom Benutzer gewählten Dateierweiterung gespeichert wird.

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 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 Function DetermineImageFormat(ByVal filePath As String) As System.Drawing.Imaging.ImageFormat
	Return If(System.IO.Path.GetExtension(filePath).ToLower() = ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg, System.Drawing.Imaging.ImageFormat.Png)
End Function
VB   C#

Diese Flexibilität ermöglicht es den Nutzern, das Format zu wählen, das ihren Bedürfnissen am besten entspricht, unabhängig davon, ob die Qualität im Vordergrund steht(PNG) oder Dateigröße(JPEG).

4.8 Zurücksetzen der Anwendung

Die Reset-Funktionalität ist mit einer "Reset"-Schaltfläche verknüpft, die die Methode "btn_reset_Click" aufruft. Diese Methode wiederum ruft ResetFields auf, eine Funktion, die alle Benutzereingaben löscht und die Standardwerte für alle Einstellungen wiederherstellt, einschließlich der Textfelder, Farbauswahlen und des ausgewählten Logos.

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 = System.Drawing.Color.White;
    txt_selected_bgcolor.BackColor = System.Drawing.Color.Black;
    logoBmp = null;
    selected_logo.Image = null;
    pictureBox.Image = null;
}
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 = System.Drawing.Color.White;
    txt_selected_bgcolor.BackColor = System.Drawing.Color.Black;
    logoBmp = null;
    selected_logo.Image = null;
    pictureBox.Image = null;
}
Private Sub btn_reset_Click(ByVal sender As Object, ByVal e As EventArgs)
	ResetFields()
End Sub
Private Sub ResetFields()
	txt_QR.Text = String.Empty
	txt_dimension.Value = 200
	txt_margin.Value = 0
	bgColor = Color.White
	color = Color.Black
	txt_selected_color.BackColor = System.Drawing.Color.White
	txt_selected_bgcolor.BackColor = System.Drawing.Color.Black
	logoBmp = Nothing
	selected_logo.Image = Nothing
	pictureBox.Image = Nothing
End Sub
VB   C#

Diese Methode setzt alle an der QR-Code-Generierung beteiligten Komponenten zurück. So wird beispielsweise der QR-Code-Text gelöscht, die Abmessungen und Ränder werden auf Standardwerte gesetzt, und ausgewählte Farben oder Logos werden entfernt.

4.9 Fehlerbehandlung

Die Anwendung verwendet die Methode ShowError, um Fehlermeldungen in einer benutzerfreundlichen Weise anzuzeigen. Diese Methode nimmt zwei Parameter entgegen: einen Titel und eine Meldung, die dem Benutzer den Kontext des Fehlers mitteilen. So wird es umgesetzt:

private static void ShowError(string title, string message)
{
    MessageBox.Show($"{title}: {message}", "Error");
}
private static void ShowError(string title, string message)
{
    MessageBox.Show($"{title}: {message}", "Error");
}
Private Shared Sub ShowError(ByVal title As String, ByVal message As String)
	MessageBox.Show($"{title}: {message}", "Error")
End Sub
VB   C#

Diese Methode wird in verschiedenen Teilen der Anwendung eingesetzt, um sicherzustellen, dass der Benutzer beim Auftreten eines Fehlers sofort mit einer klaren und präzisen Meldung informiert wird. Tritt zum Beispiel ein Fehler beim Laden des Logos oder bei der QR-Code-Erzeugung auf, ruft die Anwendung ShowError auf, um Details zum Problem anzuzeigen.

4.10 Vollständiges Code-Beispiel

Hier ist der vollständige Code, der Ihnen helfen wird, den Code viel leichter zu verstehen:

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");
        }
    }
}
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");
        }
    }
}
Imports IronQr
Imports IronSoftware.Drawing
Imports Color = IronSoftware.Drawing.Color
Namespace IronQR_QR_Generator_WinForms
	Partial Public Class QR_Generator
		Inherits Form

		Private qrCodesDirectory As String = System.IO.Path.Combine(Application.StartupPath, "QR Codes")
		Private bgColor As Color = Color.White
		Private color As Color = Color.Black
		Private logoBmp? As AnyBitmap = Nothing
		Public Sub New()
			InitializeComponent()
			SetLicenseKey()
			EnsureDirectoryExists(qrCodesDirectory)
		End Sub
		Private Shared Sub SetLicenseKey()
			IronQr.License.LicenseKey = "License-Key"
		End Sub
		Private Shared Sub EnsureDirectoryExists(ByVal path As String)
			If Not System.IO.Directory.Exists(path) Then
				System.IO.Directory.CreateDirectory(path)
			End If
		End Sub
		Private Sub btn_color_Click(ByVal sender As Object, ByVal e As EventArgs)
			UpdateColor(color, txt_selected_color, False)
		End Sub
		Private Sub btn_background_Click(ByVal sender As Object, ByVal e As EventArgs)
			UpdateColor(bgColor, txt_selected_bgcolor, True)
		End Sub
		Private Function ColorToHex(ByVal color As System.Drawing.Color) As String
			Return $"#{color.R:X2}{color.G:X2}{color.B:X2}"
		End Function
		Private Sub UpdateColor(ByRef targetColor As Color, ByVal display As Control, ByVal isBackground As Boolean)
			If select_color.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
				Dim hexColor = ColorToHex(select_color.Color)
				targetColor = New Color(hexColor)
				display.BackColor = select_color.Color
			End If
		End Sub
		Private Sub btn_logo_Click(ByVal sender As Object, ByVal e As EventArgs)
			If select_logo.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
				Try
					logoBmp = New AnyBitmap(select_logo.FileName)
					selected_logo.Image = Image.FromFile(select_logo.FileName)
				Catch ex As Exception
					ShowError("An error occurred while loading the logo", ex.Message)
				End Try
			End If
		End Sub
		Private Sub btn_generate_Click(ByVal sender As Object, ByVal e As EventArgs)
			GenerateQRCode()
		End Sub
		Private Sub GenerateQRCode()
			Try
				Dim options = New QrOptions(QrErrorCorrectionLevel.High)
				Dim myQr = QrWriter.Write(txt_QR.Text, options)
				Dim style = CreateStyleOptions()
				Dim qrImage = myQr.Save(style)
				Dim fileName = $"{DateTime.Now:yyyyMMddHHmmssfff}_QR.png"
				Dim fullPath = System.IO.Path.Combine(qrCodesDirectory, fileName)
				qrImage.SaveAs(fullPath)
				pictureBox.Image = Image.FromFile(fullPath)
			Catch ex As Exception
				ShowError("An error occurred during QR code generation or saving", ex.Message)
			End Try
		End Sub
		Private Function CreateStyleOptions() As QrStyleOptions
'INSTANT VB TODO TASK: Throw expressions are not converted by Instant VB:
'ORIGINAL LINE: 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 };
			Return New QrStyleOptions With {
				.BackgroundColor = bgColor,
				.Color = color,
				.Dimensions = If(txt_dimension.Value > 0, Convert.ToInt32(txt_dimension.Value), throw New ArgumentException("Please select valid dimensions!")),
				.Margins = Convert.ToInt32(txt_margin.Value),
				.Logo = If(logoBmp IsNot Nothing, New QrLogo With {
					.Bitmap = logoBmp,
					.Width = 50,
					.Height = 50,
					.CornerRadius = 5
				}, Nothing)
			}
		End Function
		Private Sub btn_save_Click(ByVal sender As Object, ByVal e As EventArgs)
			SaveQRCode()
		End Sub
		Private Sub SaveQRCode()
			If pictureBox.Image Is Nothing Then
				MessageBox.Show("There is no QR code to save.", "Error")
				Return
			End If
			saveFileDialog.Filter = "PNG Files *.png JPEG Files *.jpg"
			saveFileDialog.Title = "Save QR Code"
			saveFileDialog.FileName = "QRCode"
			If saveFileDialog.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
				Try
					pictureBox.Image.Save(saveFileDialog.FileName, DetermineImageFormat(saveFileDialog.FileName))
					MessageBox.Show("QR Code has been saved!", "Success")
				Catch ex As Exception
					ShowError("An error occurred while saving the QR code", ex.Message)
				End Try
			End If
		End Sub
		Private Function DetermineImageFormat(ByVal filePath As String) As System.Drawing.Imaging.ImageFormat
			Return If(System.IO.Path.GetExtension(filePath).ToLower() = ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg, System.Drawing.Imaging.ImageFormat.Png)
		End Function
		Private Sub btn_reset_Click(ByVal sender As Object, ByVal e As EventArgs)
			ResetFields()
		End Sub
		Private Sub 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 = Nothing
			selected_logo.Image = Nothing
			pictureBox.Image = Nothing
		End Sub
		Private Shared Sub ShowError(ByVal title As String, ByVal message As String)
			MessageBox.Show($"{title}: {message}", "Error")
		End Sub
	End Class
End Namespace
VB   C#

Schritt 5: Anwendung ausführen

Wenn die Anwendung ausgeführt wird, erscheint das Hauptfenster wie in der Abbildung gezeigt. Das Layout ist übersichtlich in Abschnitte für Eingabe, Styling, Ausgabe und Aktionen gegliedert.

Wie man eine QR-Code-Generator-Anwendung in C# erstellt: Abbildung 21 - Ausgabe der Anwendung

Der erste Schritt des Prozesses besteht in der Eingabe von Daten in das Feld "Input QR Text". Diese Daten bilden den Inhalt des QR-Codes, z. B. eine URL oder Textinformationen. Um den QR-Code zu personalisieren, wählen wir ein Logo aus, indem wir auf die Schaltfläche "Logo auswählen" klicken. Nach der Auswahl wird das Logo sichtbar im Vorschaufeld neben der Schaltfläche platziert, um seine Einbindung in das QR-Code-Design zu bestätigen.

Wie man eine QR-Code-Generator-Anwendung in C# erstellt: Abbildung 22 - Logo

Nach der Auswahl des Logos wählen wir die Vorder- und Hintergrundfarben des QR-Codes. Nach dem Anklicken der entsprechenden Schaltflächen werden die gewählten Farben in den Farbanzeigefeldern neben den einzelnen Schaltflächen angezeigt, so dass wir eine sofortige visuelle Bestätigung unserer Auswahl erhalten.

Wie erstellt man einen QR Code Generator in C#: Abbildung 23 - Farbauswahl

Für diesen speziellen QR-Code haben wir die Abmessungen auf 500 gesetzt, um sicherzustellen, dass der Code eine für unsere Bedürfnisse geeignete Größe hat, und die Ränder auf 20 eingestellt, was einen Puffer um den QR-Code herum bietet, um Probleme beim Scannen zu vermeiden.

Wie erstellt man einen QR Code Generator in C#: Abbildung 24 - Abmessungen

Nachdem alle Eingaben und Gestaltungsoptionen festgelegt wurden, wird der QR-Code durch Klicken auf die Schaltfläche "QR-Code generieren" erstellt. Die Anwendung verarbeitet unsere Eingaben und zeigt den frisch erstellten QR-Code in der Ausgabebildbox an.

Wie man eine QR-Code-Generator-Anwendung in C# erstellt: Abbildung 25 - Lesen von QR-Codes Ausgabe

Um den generierten QR-Code zu speichern, klicken wir einfach auf die Schaltfläche "QR speichern". Diese Aktion öffnet einen Speicherdialog, in dem wir das Ziel und das Dateiformat für unser QR-Code-Bild auswählen können.

Wie man eine QR-Code-Generator-Anwendung in C# erstellt: Abbildung 26 - Speichern-Dialog

Nach dem Speichern bestätigt eine Erfolgsmeldung, dass der QR-Code erfolgreich gespeichert wurde.

Wie man eine QR-Code-Generator-Anwendung in C# erstellt: Abbildung 27 - Erfolgsmeldung

Wenn wir von vorne beginnen oder einen neuen QR-Code erstellen müssen, können wir durch Klicken auf die Schaltfläche "Formular zurücksetzen" das Formular in seinen ursprünglichen Zustand zurückversetzen und alle Felder und Auswahlen löschen, damit wir den nächsten QR-Code erstellen können.

Wie man eine QR-Code-Generator-Anwendung in C# erstellt: Abbildung 28 - Formular zurücksetzen

Hier ist der gespeicherte QR-Code, der von IronQR generiert wurde:

Wie man eine QR-Code-Generator-Anwendung in C# erstellt: Abbildung 29 - QR-Code-Ausgabe

Schlussfolgerung

Abschließend haben wir Sie in dieser Anleitung durch den Prozess der Erzeugung von QR-Codes mit der IronQR-Bibliothek in einer C#-Anwendung geführt. Indem wir die Schritte vom Einrichten Ihres Projekts in Visual Studio über das Integrieren der IronQR-Bibliothek und das Entwerfen einer benutzerfreundlichen Oberfläche bis hin zum Schreiben der Backend-Logik aufgeschlüsselt haben, haben wir gezeigt, wie einfach es ist, QR-Code-Funktionen zu Ihren Anwendungen hinzuzufügen.

Für diejenigen, die die Möglichkeiten von IronQR weiter erforschen möchten, ist es erwähnenswert, dass IronQR einekostenloser Test um Ihnen den Einstieg zu erleichtern. Sollten Sie sich entscheiden, IronQR in Ihre Projekte zu integrieren, beginnen die Lizenzen bei $749 und bieten eine kostengünstige Lösung für die professionelle QR-Code-Generierung.

< PREVIOUS
Lesen von QR-Codes in C#
NÄCHSTES >
QR-Code generieren mit QRCoder im Vergleich zu IronQR in .NET 6

Sind Sie bereit, loszulegen? Version: 2024.12 gerade veröffentlicht

Gratis NuGet-Download Downloads insgesamt: 24,107 Lizenzen anzeigen >