Application de génération de codes QR en C

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

Bienvenue dans notre guide sur la création de codes QR avec C#! Les codes QR et le DLL de code-barres .NET sont devenus des moyens populaires de partager des informations rapidement et efficacement. Que vous développiez une application, que vous gériez un site web ou que vous cherchiez simplement un moyen pratique de partager des liens, ces codes peuvent être incroyablement utiles. Dans ce guide, nous allons vous montrer comment générer efficacement des codes QR à l'aide d'IronQR , vous permettant ainsi de créer des codes QR adaptés à vos besoins. Cette bibliothèque facilite la création de codes QR avec C# sans devoir se plonger dans une logique complexe. Nous vous guiderons à travers les étapes, en vous assurant d'avoir tout ce dont vous avez besoin pour commencer. Que vous souhaitiez ajouter une fonctionnalité de générateur de codes QR à votre application ou que vous soyez simplement curieux de savoir comment cela fonctionne, vous êtes au bon endroit. Commençons.

Installer la bibliothèque de génération de codes QR en C

Commencez à utiliser IronQR dans votre projet aujourd'hui avec un essai gratuit.

Première étape :
green arrow pointer


Avant de commencer, nous devons installer le package NuGet IronQR .

Install-Package IronQR

IronQR : Bibliothèque QR C

IronQR est une bibliothèque C# pour l'intégration de la fonction de code QR dans les applications .NET. IronQR prend en charge une large gamme de versions .NET et de types de projets, y compris C#, VB.NET, F#, .NET Core, .NET Standard, .NET Framework, et plus encore, assurant une compatibilité avec divers environnements de développement tels que Windows, Linux, macOS, iOS, et Android.

IronQR se distingue par ses fonctionnalités avancées, y compris la capacité de lire les codes QR et de générer des codes QR, ainsi que le support pour plusieurs formats d'image et les options de personnalisation comme le redimensionnement, la stylisation, et l'ajout de logos aux codes QR.

Quelques fonctionnalités clés d'IronQR

IronQR étend sa fonctionnalité au-delà de la simple génération de codes QR, offrant plusieurs fonctions conçues pour répondre à une large gamme de tâches liées aux codes QR. Passons en revue ces fonctionnalités et examinons leurs exemples de code que vous pourrez intégrer dans n'importe quel type de modèle d'application .NET, comme une application console.

Lire les codes QR

IronQR excelle dans le décodage des codes QR, fournissant aux utilisateurs un moyen simple d'accéder aux informations intégrées dans les codes QR. Vous pouvez extraire rapidement et avec précision des données des codes QR, allant de simples URL à des informations intégrées complexes.

: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

Le processus commence par l'intégration des espaces de noms nécessaires : IronQr et Iron Software.Drawing, avec une mention spécifique de Color de l'espace de noms Iron Software.Drawing pour gérer les manipulations d'images.

Avant de se plonger dans le processus de lecture de code QR, il est essentiel d'activer le logiciel avec votre clé de licence en l'assignant à IronQr.License.LicenseKey. Le code procède ensuite au chargement de l'image de code QR à partir d'un fichier en utilisant AnyBitmap.FromFile("QRCode.png").

Avec l'image chargée, l'étape suivante implique de la préparer pour la détection de code QR. Cette préparation est effectuée en créant un objet QrImageInput, qui sert de conteneur pour l'image.

Le cœur de cette fonctionnalité réside dans la classe QrReader, qui est instanciée et utilisée pour effectuer l'opération de lecture de code QR. Le lecteur analyse l'image préparée, à la recherche des codes QR qu'elle contient. Le résultat de cette opération est une collection d'objets QrResult, chacun représentant un code QR détecté dans l'image.

Pour accéder et utiliser les données codées dans les codes QR, le code itère sur la collection de résultats en utilisant une boucle foreach. Chaque objet QrResult contient des propriétés telles que la valeur du code QR, qui peuvent être accédées et affichées.

Options de mode de lecture QR personnalisé

IronQR propose différents modes de lecture des codes QR, ce qui le rend polyvalent pour répondre à divers besoins.

  • Mode de numérisation mixte : Offre un équilibre entre vitesse et précision, utile pour les codes QR peu clairs ou partiellement cachés.
  • Mode de numérisation par apprentissage automatique (ML) : Utilise une technologie avancée pour lire les codes QR endommagés ou difficiles à lire, idéal pour les scénarios difficiles à détecter.
  • Mode de numérisation basique : La méthode la plus simple et la plus rapide pour des codes QR clairs et sans ambiguïté.
: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

Lire les codes QR avancés

Les capacités avancées de lecture de codes QR d'IronQR offrent une approche complète du scan et du décodage des codes QR. Cet ensemble de fonctionnalités va au-delà de la simple lecture, offrant un niveau d'interaction et d'extraction de données plus approfondi.

: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

Pour créer un générateur de code QR à l'aide de la bibliothèque IronQR dans une application C#, suivez attentivement ces étapes. Ce guide vous guidera à travers le processus de configuration d'une application Windows Forms, l'installation de la bibliothèque IronQR, l'écriture du code pour générer un code QR, et la compréhension du résultat.

Étape 1 : Créer une application Windows dans Visual Studio

  1. Commencez par lancer Visual Studio sur votre ordinateur.
  2. Cliquez sur le bouton " Créer un nouveau projet ".
  3. Sélectionnez Application Windows Forms comme type de projet. Assurez-vous de choisir C# comme langue.

! Application Windows Forms

  1. Saisissez un nom pour votre projet et sélectionnez l'emplacement où l'enregistrer. Ensuite, sur l'écran suivant, sélectionnez .NET framework. Ensuite, cliquez sur Create.

! Configuration du projet

Étape 2 : Installer la bibliothèque IronQR

Il est maintenant temps d'installer la bibliothèque IronQR dans le projet. Vous pouvez installer la bibliothèque IronQR par différentes méthodes.

Installer en utilisant le gestionnaire de paquets NuGet

  1. Cliquez avec le bouton droit sur votre projet dans l'Explorateur de solutions et sélectionnez Gérer les packages NuGet .
  2. Tapez IronQR dans la zone de recherche et appuyez sur Entrée . Gérer les packages NuGet
  3. Trouvez IronQR dans la liste et cliquez sur Installer à côté.

Installez IronQR !

Installer en utilisant la console du gestionnaire de paquets NuGet

  1. Accédez à Outils > Gestionnaire de packages NuGet > Console du gestionnaire de packages .
    Gestionnaire de paquets NuGet
  2. Tapez Install-Package IronQR et appuyez sur Entrée.
Installer IronQR

Étape 3 : Concevoir l'interface

Générateur de Code QR

3.1 En-tête de titre

Générer un code QR

Au lancement de l'application Générateur de Code QR, les utilisateurs sont immédiatement présentés avec un en-tête saisissant intitulé "QR Generator IronQR," défini dans une police audacieuse et autoritaire.

3.2 Section d'entrée

Saisie de texte pour le code QR

Les utilisateurs peuvent saisir les données qu'ils souhaitent encoder dans leur code QR.

Sélectionner le logo

La zone " Sélectionner le logo " permet un niveau de personnalisation supplémentaire. Les utilisateurs peuvent télécharger un logo qui sera intégré au code QR.

Configuration des couleurs

Couleur de fond

Des boutons de sélection des couleurs permettent aux utilisateurs de personnaliser la palette de leur code QR.

3.3 Paramètres de style

stylisme

Paramètres de dimension

Permet aux utilisateurs de spécifier la taille globale du code QR.

Paramètres de marge

Permet aux utilisateurs de spécifier l'espace blanc entourant le code QR.

3.4 Aperçu du résultat

Fournit un aperçu en temps réel du code QR généré.

Sortie QR

3.5 Boutons d'action

Générer un QR

Déclenche le processus de création du code QR.

Code QR en C#

Enregistrer le code QR

Ouvre une boîte de dialogue d'enregistrement pour sauvegarder le code QR.

Enregistrer

Réinitialiser le formulaire

Efface toutes les saisies et sélections précédentes.

Réinitialiser

Étape 4 : Écrire la logique du backend

4.1 Configuration et initialisation

Inclut les espaces de noms nécessaires : IronQr et 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 Configuration de la clé de licence

Applique une clé de licence valide pour la bibliothèque IronQR :

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

Remplacez &quot;YOUR_LICENSE_KEY&quot; par votre clé de licence réelle.

4.3 Gestion des répertoires

Vérifie ou crée les répertoires nécessaires.

: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

Le chemin d'accès au répertoire des codes QR est défini dans le constructeur de la classe QR_Generator sous la forme qrCodesDirectory, qui combine le chemin de démarrage de l'application avec un nom de dossier " Codes QR " :

: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 Sélection de couleur

Fournit des composants de boîte de dialogue couleur et des fonctions utilitaires.

: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

La méthode UpdateColor prend la couleur sélectionnée et la convertit au format Iron Software.Drawing.Color en utilisant la chaîne hexadécimale, puis met à jour la couleur de premier plan ou d'arrière-plan du code QR en fonction de la sélection. Elle met également à jour l'interface utilisateur pour refléter le nouveau choix de couleur:

: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

Permet à l'utilisateur de sélectionner un logo.

: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 Génération de code QR

Contient la logique de génération de codes QR à partir des données saisies par l'utilisateur.

: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

L'objet QrOptions définit le niveau de correction d'erreur, améliorant ainsi la résistance du code QR aux dommages ou à l'obscurcissement. La méthode CreateStyleOptions génère un objet QrStyleOptions, qui inclut les paramètres personnalisés de l'utilisateur tels que les couleurs, les dimensions et le logo. Voici la méthode en détail:

: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 Enregistrement du code QR

Gère l'enregistrement du code QR généré.

: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 Réinitialiser l'application

Efface les données saisies par l'utilisateur et réinitialise l'état du formulaire.

: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 Gestion des erreurs

Affiche les messages d'erreur aux utilisateurs.

: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 Exemple de code complet

Le code complet regroupant toutes les fonctionnalités ci-dessus se trouve dans le fichier d'exemple lié à votre projet.

: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

Étape 5 : Exécuter l'application

Lorsque l'application est exécutée, la fenêtre principale apparaît organisée en sections pour la saisie, le style, la sortie et les actions. Suivez les instructions de l'interface utilisateur pour saisir les données, personnaliser votre code QR, puis générer et enregistrer le code QR comme vous le souhaitez.

Conclusion

En conclusion, ce guide vous a guidé à travers le processus de génération de codes QR utilisant la bibliothèque IronQR dans une application C#. En décomposant les étapes depuis la configuration de votre projet dans Visual Studio, l'intégration de la bibliothèque IronQR, la conception d'une interface conviviale et l'écriture de la logique backend, nous avons démontré à quel point il est accessible d'ajouter une fonctionnalité de code QR à vos applications.

Pour ceux qui souhaitent explorer plus en détail les fonctionnalités d'IronQR, il est à noter qu'IronQR propose un essai gratuit pour vous permettre de démarrer. Si vous décidez d'intégrer IronQR dans vos projets, les licences commencent à $799, offrant une solution rentable pour la génération de codes QR de qualité professionnelle.

Questions Fréquemment Posées

Comment puis-je créer une application génératrice de code QR en C# ?

Pour créer une application génératrice de code QR en C#, vous pouvez utiliser la bibliothèque IronQR. Commencez par configurer une application Windows Forms dans Visual Studio, installez IronQR via NuGet, et concevez le frontend de votre application. Implémentez la logique de génération de code QR en utilisant les fonctionnalités d'IronQR, telles que la sélection des couleurs et l'intégration de logos.

Quels sont les avantages d'utiliser une bibliothèque de code QR .NET ?

Une bibliothèque de code QR .NET comme IronQR offre des fonctionnalités avancées telles qu'une haute précision dans la lecture des codes QR, des options de personnalisation pour la génération des codes QR, et la prise en charge de divers environnements .NET. Elle permet également le redimensionnement et le style des codes QR.

Comment gérer les erreurs lors de la génération de codes QR en C# ?

En C#, vous pouvez gérer les erreurs lors de la génération de codes QR en implémentant des mécanismes appropriés de gestion des erreurs en utilisant des blocs try-catch. IronQR facilite la gestion fluide des erreurs, garantissant que tout problème lors de la création des codes QR est traité efficacement.

Puis-je intégrer des logos dans des codes QR en utilisant une bibliothèque de codes QR ?

Oui, vous pouvez intégrer des logos dans des codes QR en utilisant la bibliothèque IronQR. Cette fonctionnalité vous permet d'améliorer l'image de marque de vos codes QR en intégrant des logos personnalisés dans le design.

Comment puis-je enregistrer les codes QR générés dans une application C# ?

Vous pouvez enregistrer les codes QR générés dans une application C# en utilisant la fonctionnalité d'IronQR pour spécifier les répertoires de stockage. Cela vous permet de gérer et de stocker efficacement les codes QR générés au sein de votre application.

Quelles étapes sont nécessaires pour configurer une clé de licence pour une bibliothèque de code QR ?

Pour configurer une clé de licence pour IronQR, vous devez incorporer le code de licence dans votre application. Cela implique généralement d'ajouter des lignes de code spécifiques fournies par IronQR pour activer la bibliothèque avec votre licence achetée.

Comment puis-je styliser les codes QR avec des couleurs spécifiques dans mon application C# ?

IronQR vous permet de styliser les codes QR avec des couleurs spécifiques en utilisant ses fonctionnalités de personnalisation des couleurs. Vous pouvez sélectionner des couleurs pour l'avant-plan et l'arrière-plan du code QR en utilisant les dialogues de sélection de couleurs intégrés dans votre application.

Quel est le processus d'installation d'une bibliothèque de code QR dans Visual Studio ?

Pour installer une bibliothèque de code QR comme IronQR dans Visual Studio, utilisez le Gestionnaire de Paquets NuGet. Recherchez 'IronQR' et cliquez sur 'Installer' pour l'ajouter à votre projet. Alternativement, utilisez la Console du Gestionnaire de Paquets avec la commande 'Install-Package IronQR'.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite
Prêt à commencer?
Nuget Téléchargements 51,390 | Version: 2025.11 vient de sortir