C# QR-Code-Generator-Anwendung

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

Willkommen zu unserem Leitfaden zur Erstellung von QR-Codes mit C#! QR-Codes und .NET-Barcodedateien sind beliebte Methoden geworden, um Informationen schnell und effizient zu teilen. Egal, ob Sie eine App entwickeln, eine Website verwalten oder einfach nur nach einer praktischen Möglichkeit suchen, Links zu teilen, diese Codes können unglaublich nützlich sein. In diesem Leitfaden zeigen wir Ihnen, wie Sie mit IronQR effizient QR-Codes generieren können, sodass Sie QR-Codes erstellen können, die auf Ihre Bedürfnisse zugeschnitten sind. Diese Bibliothek macht es jedem, der mit C# arbeitet, leicht, QR-Codes zu erstellen, ohne sich mit komplexer Logik zu befassen. Wir führen Sie Schritt für Schritt durch den Prozess, damit Sie alles haben, was Sie benötigen, um loszulegen. Egal, ob Sie die Funktionalität zum QR-Code-Generator zu Ihrer App hinzufügen möchten oder einfach neugierig sind, wie es gemacht wird, hier sind Sie am richtigen Ort. Lassen Sie uns beginnen.

QR Code Generator Bibliothek in C# installieren

Nutzen Sie IronQR heute kostenlos in Ihrem Projekt.

Erster Schritt:
green arrow pointer


Bevor wir beginnen, müssen wir das IronQR NuGet-Paket installieren.

Install-Package IronQR

IronQR: C# QR-Bibliothek

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

IronQR zeichnet sich mit seinen erweiterten Funktionen aus, darunter die Möglichkeit, QR-Codes zu lesen und QR-Codes zu generieren, Unterstü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 erweitert seine Funktionalität über die grundlegende QR-Code-Generierung hinaus und bietet mehrere Funktionen, die darauf ausgelegt sind, eine breite Palette von QR-Code-bezogenen Aufgaben zu bewältigen. Lassen Sie uns diese Funktionen durchgehen und ihre Beispielcodes prüfen, die Sie in jede Art von .NET-Anwendungsvorlage wie Konsolenanwendung integrieren können.

QR-Codes lesen

IronQR zeichnet sich durch das Dekodieren 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 genau Daten aus QR-Codes extrahieren, von einfachen URLs bis hin zu komplexen eingebetteten Informationen.

:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-1.cs
using IronQr;
using IronSoftware.Drawing;
using System;
using System.Collections.Generic;

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
}
Imports IronQr
Imports IronSoftware.Drawing
Imports System
Imports System.Collections.Generic

IronQr.License.LicenseKey = "License-Key"

' Load the image file that contains the QR Code
Dim inputImage = AnyBitmap.FromFile("QRCode.png")

' Prepare the image for QR code detection
Dim qrInput As New QrImageInput(inputImage)

' Initialize the QR Code reader
Dim qrReader As New QrReader()

' Execute QR Code reading on the provided image
Dim qrResults As IEnumerable(Of QrResult) = qrReader.Read(qrInput)

' Assuming you have the QR results in qrResults as before
For Each result In qrResults
	Console.WriteLine(result.Value) ' Print the QR code content to the console
Next result
$vbLabelText   $csharpLabel

Der Prozess beginnt mit dem Import der notwendigen Namensräume: IronQr und Iron Software.Drawing, mit einer spezifischen Erwähnung von Color aus dem Iron Software.Drawing-Namespace zur Bildbearbeitung.

Bevor Sie mit dem Prozess des QR-Code-Lesens beginnen, ist es wichtig, die Software mit Ihrem Lizenzschlüssel zu 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").

Mit dem geladenen Bild besteht der nächste Schritt darin, es für die QR-Code-Erkennung vorzubereiten. Diese Vorbereitung erfolgt durch das Erstellen eines QrImageInput-Objekts, das als Container für das Bild dient.

Der Kern dieser Funktion liegt in der QrReader-Klasse, die instanziiert wird und verwendet wird, um die QR-Code-Leseoperation durchzuführen. Der Leser analysiert das vorbereitete Bild und sucht nach darin enthaltenen QR-Codes. Das Ergebnis dieser Operation ist eine Sammlung von QrResult-Objekten, die jeweils einen im Bild erkannten QR-Code darstellen.

Um auf die in den QR-Codes codierten Daten zuzugreifen und sie zu nutzen, iteriert der Code mit einer foreach-Schleife über die Sammlung von Ergebnissen. Jedes QrResult-Objekt enthält Eigenschaften wie den Wert des QR-Codes, der abgerufen und angezeigt werden kann.

Benutzerdefinierte QR-Lesemodus-Optionen

IronQR bietet verschiedene Modi zum Lesen von QR-Codes, was es vielseitig für unterschiedliche Bedürfnisse macht.

  • Gemischter Scan-Modus: Balanciert Geschwindigkeit und Genauigkeit, nützlich für QR-Codes, die nicht klar oder teilweise verborgen sind.
  • Maschinelles Lernen (ML) Scan-Modus: Nutzt fortschrittliche Technologie, um beschädigte oder schwer lesbare QR-Codes zu lesen, ideal für schwer zu erkennende Szenarien.
  • Basis-Scan-Modus: Die einfachste und schnellste Methode, für klare und einfache QR-Codes.
:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-2.cs
using IronQr;
using IronQr.Enum;
using IronSoftware.Drawing;
using System.Collections.Generic;

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 System.Collections.Generic

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

Erweiterte QR-Codes lesen

Die fortschrittlichen QR-Code-Lesefunktionen von IronQR bieten einen umfassenden Ansatz für das Scannen und Dekodieren von QR-Codes. Dieses Funktionsset geht über einfaches Lesen hinaus und bietet eine tiefere Ebene der Interaktion und Datenextraktion.

:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-3.cs
using IronQr;
using IronSoftware.Drawing;
using System;
using System.Collections.Generic;

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 IronSoftware.Drawing
Imports System
Imports System.Collections.Generic

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

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

Schritt 1: Erstellen Sie eine Windows-Anwendung in Visual Studio

  1. Starten Sie Visual Studio auf Ihrem Computer.
  2. Klicken Sie auf die Schaltfläche "Neues Projekt erstellen".
  3. Wählen Sie Windows Forms-App als Projekttyp. Wählen Sie C# als Sprache.

Windows Forms-App

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

Projektkonfiguration

Schritt 2: Installieren Sie die IronQR-Bibliothek

Nun ist es an der Zeit, die IronQR-Bibliothek im Projekt zu installieren. Sie können die IronQR-Bibliothek über verschiedene Methoden installieren.

Installation über den NuGet-Paket-Manager

  1. Klicken Sie mit der rechten Maustaste auf Ihr Projekt im Projektmappen-Explorer und wählen Sie NuGet-Pakete verwalten.
  2. Geben Sie IronQR in das Suchfeld ein und drücken Sie Enter. NuGet-Pakete verwalten
  3. Finden Sie IronQR in der Liste und klicken Sie auf Installieren daneben.

Installieren Sie IronQR

Installation über die NuGet-Paket-Manager-Konsole

  1. Gehen Sie zu Extras > NuGet-Paket-Manager > Paket-Manager-Konsole.
    NuGet-Paket-Manager
  2. Geben Sie Install-Package IronQR ein und drücken Sie die Eingabetaste.
IronQR installieren

Schritt 3: Frontend-Design

QR Code Generator

3.1 Titelüberschrift

Einen QR-Code generieren

Beim Starten der QR-Code-Generator-Anwendung wird den Benutzern sofort eine auffällige Überschrift "QR Generator IronQR" präsentiert, die in einer fetten und markanten Schriftart gesetzt ist.

3.2 Eingabebereich

Texteingabe für QR-Code

Benutzer können die Daten eingeben, die sie in ihren QR-Code kodieren möchten.

Logoauswahl

Logo auswählen

Der Bereich "Logo auswählen" ermöglicht eine zusätzliche Ebene der Anpassung. Benutzer können ein Logo hochladen, das im QR-Code eingebettet wird.

Farbkonfiguration

Hintergrundfarbe

Schaltflächen zur Farbauswahl ermöglichen es den Benutzern, die Palette ihres QR-Codes anzupassen.

3.3 Stilparameter

Styling

Dimensionseinstellungen

Ermöglicht es Benutzern, die Gesamtgröße des QR-Codes festzulegen.

Randeinstellungen

Ermöglicht es Benutzern, den weißen Raum um den QR-Code herum festzulegen.

3.4 Ausgabespeicher

Bietet eine Echtzeitvorschau des generierten QR-Codes.

QR-Code-Ausgabe

3.5 Aktionsschaltflächen

QR erzeugen

Löst den QR-Code-Erstellungsprozess aus.

QR-Code in C#

QR-Code speichern

Öffnet ein Dialogfeld zum Speichern des QR-Codes.

Sparen

Formular zurücksetzen

Löscht alle vorherigen Eingaben und Auswahlen.

Zurücksetzen

Schritt 4: Backend-Logik schreiben

4.1 Einrichtung und Initialisierung

Beinhaltet notwendige Namensräume: IronQr und Iron Software.Drawing.

:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-4.cs
using IronQr;
using IronSoftware.Drawing;
using Color = IronSoftware.Drawing.Color;

Imports IronQr
Imports IronSoftware.Drawing
Imports Color = IronSoftware.Drawing.Color
$vbLabelText   $csharpLabel
:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-5.cs
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
$vbLabelText   $csharpLabel

4.2 Lizenzschlüssel-Konfiguration

Wendet einen gültigen Lizenzschlüssel für die IronQR-Bibliothek an:

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

Ersetzen Sie "YOUR_LICENSE_KEY" durch Ihren tatsächlichen Lizenzschlüssel.

4.3 Verzeichniserwaltung

Überprüft oder erstellt notwendige Verzeichnisse.

:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-7.cs
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
$vbLabelText   $csharpLabel

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

:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-8.cs
string qrCodesDirectory = System.IO.Path.Combine(Application.StartupPath, "QR Codes");
Dim qrCodesDirectory As String = System.IO.Path.Combine(Application.StartupPath, "QR Codes")
$vbLabelText   $csharpLabel

4.4 Farbauswahl

Bietet Farbdialogkomponenten und Dienstprogramme.

:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-9.cs
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
$vbLabelText   $csharpLabel

Die UpdateColor-Methode nimmt die ausgewählte Farbe und konvertiert sie in das Iron Software.Drawing.Color-Format unter Verwendung des Hexadezimalstrings und aktualisiert entweder die Vordergrund- oder Hintergrundfarbe des QR-Codes, abhängig von der Auswahl. Es aktualisiert auch die Benutzeroberfläche, um die neue Farbauswahl anzuzeigen:

:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-10.cs
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
$vbLabelText   $csharpLabel

4.5 Hinzufügen eines Logos

Ermöglicht es dem Benutzer, ein Logo auszuwählen.

:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-11.cs
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
$vbLabelText   $csharpLabel

4.6 Erstellung des QR-Codes

Enthält die Logik zur Generierung von QR-Codes basierend auf Benutzereingaben.

:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-12.cs
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
$vbLabelText   $csharpLabel

Das QrOptions-Objekt definiert das Fehlerschutzniveau, um die Widerstandsfähigkeit des QR-Codes gegenüber Beschädigungen oder Verschleierung zu verbessern. Die CreateStyleOptions-Methode generiert ein QrStyleOptions-Objekt, das die benutzerdefinierten Einstellungen wie Farben, Abmessungen und das Logo des Benutzers enthält. Hier ist die Methode im Detail:

:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-14.cs
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
$vbLabelText   $csharpLabel

4.7 Speichern des QR-Codes

Kümmert sich um das Speichern des generierten QR-Codes.

:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-15.cs
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
$vbLabelText   $csharpLabel
:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-16.cs
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
$vbLabelText   $csharpLabel

4.8 Zurücksetzen der Anwendung

Löscht Benutzereingaben und setzt den Formularstatus zurück.

:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-17.cs
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
$vbLabelText   $csharpLabel

4.9 Fehlerbehandlung

Zeigt Fehlermeldungen an Benutzer an.

:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-18.cs
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
$vbLabelText   $csharpLabel

4.10 Vollständiges Codebeispiel

Der vollständige Code, der alle oben genannten Funktionen kombiniert, kann in der Beispieldatei gefunden werden, die mit Ihrem Projekt verknüpft ist.

:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-19.cs
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
$vbLabelText   $csharpLabel

Schritt 5: Anwendung ausführen

Wenn die Anwendung ausgeführt wird, erscheint das Hauptfenster organisiert mit Abschnitten für Eingabe, Gestaltung, Ausgabe und Aktionen. Befolgen Sie die Benutzeroberfläche, um Daten einzugeben, Ihren QR-Code anzupassen und den QR-Code nach Wunsch zu erstellen und zu speichern.

Abschluss

Abschließend hat Sie dieser Leitfaden durch den Prozess der QR-Code-Erzeugung mit der IronQR-Bibliothek in einer C#-Anwendung geführt. Indem wir die Schritte von der Einrichtung Ihres Projekts in Visual Studio über die Integration der IronQR-Bibliothek, dem Entwerfen einer benutzerfreundlichen Oberfläche bis hin zur Entwicklung der Backend-Logik aufgeschlüsselt haben, haben wir gezeigt, wie zugänglich es ist, QR-Code-Funktionalität zu Ihren Anwendungen hinzuzufügen.

Für diejenigen, die daran interessiert sind, die Fähigkeiten von IronQR weiter zu erforschen, ist es erwähnenswert, dass IronQR eine kostenlose Testversion bietet, um Ihnen den Einstieg zu erleichtern. Sollten Sie sich entscheiden, IronQR in Ihre Projekte zu integrieren, beginnen die Lizenzen bei $799 und bieten eine kostengünstige Lösung für die professionelle QR-Code-Generierung.

Häufig gestellte Fragen

Wie kann ich eine QR-Code-Generator-Anwendung in C# erstellen?

Um eine QR-Code-Generator-Anwendung in C# zu erstellen, können Sie die IronQR-Bibliothek verwenden. Beginnen Sie mit der Einrichtung einer Windows Forms-Anwendung in Visual Studio, installieren Sie IronQR über NuGet und entwerfen Sie das Frontend Ihrer Anwendung. Implementieren Sie die QR-Code-Generierungslogik mit den Funktionen von IronQR, wie Farbwahl und Logo-Integration.

Was sind die Vorteile der Verwendung einer .NET QR-Code-Bibliothek?

Eine .NET QR-Code-Bibliothek wie IronQR bietet erweiterte Funktionen wie hohe Genauigkeit beim Lesen von QR-Codes, Anpassungsoptionen für die Erzeugung von QR-Codes und Unterstützung für verschiedene .NET-Umgebungen. Sie ermöglicht auch das Ändern der Größe und das Styling von QR-Codes.

Wie gehe ich mit Fehlern bei der Generierung von QR-Codes in C# um?

In C# können Sie Fehler während der QR-Code-Generierung durch die Implementierung geeigneter Fehlerbehandlungsmechanismen mit try-catch-Blöcken handhaben. IronQR erleichtert das reibungslose Fehlermanagement, sodass etwaige Probleme bei der Erstellung von QR-Codes effizient gelöst werden.

Kann ich Logos in QR-Codes mit einer QR-Code-Bibliothek einbetten?

Ja, Sie können Logos in QR-Codes mit der IronQR-Bibliothek einbetten. Diese Funktion ermöglicht es Ihnen, die Markenbildung Ihrer QR-Codes durch die Integration von benutzerdefinierten Logos zu verbessern.

Wie speichere ich QR-Codes, die in einer C#-Anwendung generiert wurden?

Sie k\u00f6nnen QR-Codes, die in einer C#-Anwendung generiert wurden, speichern, indem Sie die Funktionalit\u00e4t von IronQR nutzen, um Speicherverzeichnisse anzugeben. Dies erm\u00f6glicht es Ihnen, generierte QR-Codes effizient innerhalb Ihrer Anwendung zu verwalten und zu speichern.

Welche Schritte sind notwendig, um einen Lizenzschlüssel für eine QR-Code-Bibliothek zu konfigurieren?

Um einen Lizenzschlüssel für IronQR zu konfigurieren, müssen Sie den Lizenzierungscode in Ihre Anwendung einbinden. Dies beinhaltet typischerweise das Hinzufügen spezifischer Codezeilen, die von IronQR bereitgestellt werden, um die Bibliothek mit Ihrer erworbenen Lizenz zu aktivieren.

Wie kann ich QR-Codes mit bestimmten Farben in meiner C#-Anwendung gestalten?

IronQR ermöglicht es Ihnen, QR-Codes mit bestimmten Farben zu gestalten, indem Sie die Farb-Anpassungsfunktionen verwenden. Sie können Farben für den QR-Code-Vordergrund und -Hintergrund mit integrierten Farbauswahldialogen in Ihrer Anwendung auswählen.

Wie lautet der Prozess zur Installation einer QR-Code-Bibliothek in Visual Studio?

Um eine QR-Code-Bibliothek wie IronQR in Visual Studio zu installieren, verwenden Sie den NuGet-Paket-Manager. Suchen Sie nach 'IronQR' und klicken Sie auf 'Installieren', um sie Ihrem Projekt hinzuzufügen. Alternativ können Sie die Paket-Manager-Konsole mit dem Befehl 'Install-Package IronQR' verwenden.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen
Bereit anzufangen?
Nuget Downloads 51,390 | Version: 2025.11 gerade veröffentlicht