UTILISATION D'IRONQR

Comment créer une application de génération de code QR en C#

Publié mai 20, 2024
Partager:

Bienvenue dans notre guide sur la création deCodes QR en utilisant C#! Les codes QR et les codes-barres DLL .NET sont devenus des moyens populaires de partager des informations rapidement et efficacement. Que vous développiez une application, gériez un site web ou cherchiez simplement un moyen astucieux de partager des liens, ces codes peuvent s'avérer extrêmement utiles. Dans ce guide, nous verrons comment générer efficacement des codes QR à l'aide deIronQRvous pouvez ainsi générer des codes QR adaptés à vos besoins. Cette bibliothèque permet à toute personne travaillant avec C# de créer facilement des codes QR sans entrer dans une logique complexe. Nous vous accompagnerons tout au long des étapes, en veillant à ce que vous disposiez de tout ce dont vous avez besoin pour commencer. Que vous souhaitiez ajouter la fonctionnalité de génération de codes QR à votre application ou que vous soyez simplement curieux de savoir comment cela se passe, vous êtes au bon endroit. Commençons.

Comment créer un générateur de code QR en C# ;

  1. Créer une application Windows Forms dans Visual Studio

  2. Installer la bibliothèque QR avec NuGet

  3. Concevoir les éléments frontaux du formulaire

  4. Écrire la logique de la génération de QR5. Exécutez l'application et commencez à créer des codes QR

IronQR : C&num ; Bibliothèque QR

IronQR est une bibliothèque de code QR C# permettant d'intégrer la fonctionnalité de code QR dans les applications .NET. IronQR prend en charge un large éventail de versions de .NET et de types de projets, notamment C#, VB.NET, F#, .NET Core, .NET Standard, .NET Framework, et plus encore, garantissant ainsi la compatibilité avec divers environnements de développement tels que Windows, Linux, macOS, iOS et Android.

IronQR se distingue par ses fonctionnalités avancées, notamment la possibilité delire les codes QR etgénérer des codes QRle code QR peut être personnalisé en fonction de la taille de l'image, de son style et de l'ajout de logos aux codes QR.

Quelques caractéristiques clés d'IronQR

IronQR va au-delà de la génération de codes QR de base et propose plusieurs fonctions conçues pour répondre à un large éventail de tâches liées aux codes QR. Passons en revue ces fonctionnalités et vérifions leurs codes d'exemple que vous pourrez intégrer dans n'importe quel type de modèle d'application .NET comme l'application console.

Lire les codes QR

IronQR excelle dans le décodage des codes QR, offrant aux utilisateurs un moyen simple d'accéder aux informations incorporées dans les codes QR. Vous pouvez extraire rapidement et avec précision les données des codes QR, qu'il s'agisse de simples URL ou d'informations complexes intégrées.

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#

Nous utilisons le code QR suivant pour la numérisation :

Comment créer une application génératrice de code QR en C# : Figure 1 - Fichier image QR Code PNG

Et nous obtenons ce résultat :

Comment créer une application génératrice de code QR en C# : Figure 2 - Lire le code QR en sortie

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

Avant de plonger dans le processus de lecture du 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 du code QR à partir d'un fichier en utilisant AnyBitmap.FromFile("QRCode.png").

Une fois l'image chargée, l'étape suivante consiste à la préparer pour la détection du code QR. Cette préparation se fait par la création d'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 du code QR. Le lecteur analyse l'image préparée, qrInput, à 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 aux données encodées dans les codes QR et les utiliser, le code itère sur la collection de résultats à l'aide d'une boucle foreach. Chaque objet QrResult contient des propriétés telles que la valeur du code QR, qui peut être consultée et affichée.

Options du mode de lecture QR personnalisé

IronQR vous offre différentes façons de lire les codes QR à partir d'images, ce qui le rend polyvalent pour des besoins variés. L'une des options est le mode de balayage mixte, qui permet d'équilibrer la vitesse et la précision, utile lorsque les codes QR ne sont pas clairs ou qu'ils sont partiellement cachés.

Un autre est le Machine Learning(ML) Mode Scan, qui utilise une technologie intelligente pour lire les codes QR endommagés ou difficiles à lire normalement. Ce mode est idéal pour les situations difficiles où les codes QR sont difficiles à détecter.

Enfin, il y a le Mode de balayage de base, qui est le moyen le plus rapide et le plus simple de balayer des codes QR clairs et simples. C'est la meilleure solution lorsque vous avez besoin de résultats rapides et que les codes QR sont faciles à lire.

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#

Lire les codes QR avancés

Les capacités avancées de lecture de codes QR d'IronQR sont conçues pour offrir une approche complète et nuancée de la numérisation et du décodage des codes QR. Cet ensemble de fonctionnalités va au-delà des fonctions de base de lecture des codes QR, en offrant un niveau d'interaction et d'extraction de données plus approfondi.

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#

Voici le résultat obtenu lorsque nous scannons le code QR à l'aide d'IronQR :

Comment créer une application génératrice de code QR en C# : Figure 3 - Sortie du code QR

Nous utilisons le code QR suivant :

Comment créer une application génératrice de code QR en C# : Figure 4 - Entrée du code QR

Chaque objet QrResult donne accès aux données décodées(Valeur)tout URL incorporé(Url)et les coordonnées spatiales(Points) du code QR dans l'image.

Pour chaque code QR détecté, IronQR propose des informations détaillées, notamment le contenu exact et les éventuelles URL contenues dans le code QR. En outre, la bibliothèque fournit les coordonnées précises des coins du code QR dans l'image(par le biais de la propriété Points).

Pour créer un générateur de code QR à l'aide de la bibliothèque de codes QR IronQR dans une application C#, suivez attentivement les étapes suivantes. Ce guide vous aidera à configurer une application Windows, à installer la bibliothèque IronQR, à écrire le code pour générer un code QR et à comprendre le résultat.

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

  • Commencez par lancer Visual Studio sur votre ordinateur.
  • Cliquez sur le bouton "Créer un nouveau projet".
  • Sélectionnez Windows Forms App comme type de projet. Veillez à choisir le langage C#.

    Comment créer une application génératrice de code QR en C# : Figure 5 - Application Windows Forms

  • Saisissez un nom pour votre projet et sélectionnez l'emplacement où l'enregistrer. Sur l'écran suivant, sélectionnez le Framework .NET. Cliquez ensuite sur Créer.

    Comment créer une application génératrice de code QR en C# : Figure 6 - Configuration du projet

    Il créera et ouvrira une application Windows forms dans Visual Studio.

Étape 2 : Installation de la bibliothèque IronQR

Il est maintenant temps d'installer la bibliothèque IronQR dans le projet. Vous pouvez installer la bibliothèque IronQR de différentes manières. Choisissez celui qui vous convient le mieux :

Installation à l'aide du gestionnaire de paquets NuGet

  • Faites un clic droit sur votre projet dans l'explorateur de solutions et sélectionnez Gestion des paquets NuGet.
  • Tapez IronQR dans la zone de recherche et appuyez sur Entrée.

    Comment créer une application de génération de code QR en C# : Figure 7 - Gérer les paquets NuGet

  • Trouvez IronQR dans la liste et cliquez sur Installer à côté.

    Comment créer une application génératrice de code QR en C# : Figure 8 - Installation d'IronQR

Installation à l'aide de la console NuGet Package Manager

  • Allez dans Tools > NuGet Package Manager > Package Manager Console.

    Comment créer une application de génération de code QR en C# : Figure 9 - Gestionnaire de paquets NuGet

  • Tapez Install-Package IronQR et appuyez sur Entrée.

    Comment créer une application génératrice de code QR en C# : Figure 10 - Installation d'IronQR

Étape 3 : Conception de la partie frontale

Comment créer une application de génération de code QR en C# : Figure 11 - Générateur de code QR

3.1 En-tête du titre

Comment créer une application de génération de code QR en C# : Figure 12 - Générer un QR Code

Dès le lancement de l'application QR Code Generator, les utilisateurs sont immédiatement confrontés à un en-tête frappant intitulé "QR Generator IronQR", dans une police de caractères audacieuse et autoritaire. La police Agency FB a été choisie pour ses lignes épurées et modernes, qui donnent une impression d'efficacité et de précision. Avec une police de caractères de 48 points, le titre est à la fois proéminent et assertif, captant l'attention de l'utilisateur et établissant fermement l'identité de l'application.

3.2 Section d'entrée

Saisie de texte pour le code QR

Comment créer une application génératrice de code QR en C# : Figure 13 - Saisie du texte du code QR

Au cœur de la section de saisie se trouve un élément simple mais fondamental : la zone de saisie de texte. Ici, les utilisateurs peuvent saisir les données qu'ils souhaitent encoder dans leur code QR. L'encadré est spacieux, il peut contenir une quantité importante de texte et il est placé en évidence dans la partie supérieure.

Comment créer une application génératrice de code QR en C# : Figure 14 - Sélection du logo

En dessous du texte, la zone "Sélectionner un logo" permet une personnalisation supplémentaire. Les utilisateurs peuvent télécharger un logo qui sera intégré au code QR, ce qui permet d'améliorer la reconnaissance de la marque ou de personnaliser le code. La boîte à images adjacente donne un aperçu du logo sélectionné, offrant ainsi un retour visuel immédiat.

Configuration des couleurs

Comment créer une application génératrice de code QR en C# : Figure 15 - Couleur d'arrière-plan

En se déplaçant vers la droite, l'interface présente des options pour la sélection des couleurs. Deux boutons, l'un pour la couleur du code QR et l'autre pour la couleur d'arrière-plan, permettent aux utilisateurs de personnaliser la palette de leur code QR. Les zones de texte riche situées à côté de ces boutons indiquent la couleur actuellement sélectionnée.

La présentation soignée de la section de saisie, avec ses options de texte, de logo et de couleur, témoigne d'une bonne compréhension des priorités de l'utilisateur lors de la création d'un code QR. Il allie fonctionnalité et flexibilité, permettant aux utilisateurs de saisir rapidement et efficacement les informations nécessaires tout en laissant place à la créativité.

3.3 Paramètres de style

Comment créer une application génératrice de code QR en C# : Figure 16 - Style

Paramètres de dimension

À côté des outils de personnalisation des couleurs, les utilisateurs trouveront l'entrée "Dimensions" Ce paramètre numérique est essentiel car il dicte la taille globale du code QR, garantissant qu'il s'adapte parfaitement au contexte d'affichage prévu, qu'il s'agisse d'une carte de visite, d'un dépliant ou d'un écran numérique.

Réglages de la marge

À côté de l'entrée des dimensions, le champ "Marges" permet aux utilisateurs de spécifier l'espace blanc entourant le code QR. Les marges sont plus qu'un simple choix esthétique ; il s'agit d'un élément fonctionnel qui peut affecter la lisibilité du code QR par les scanners. L'application fournit un contrôle numérique de haut en bas permettant aux utilisateurs de régler facilement ce paramètre.

3.4 Aperçu de la sortie

Comment créer une application génératrice de code QR en C# : Figure 17 - Sortie QR

Une fois que l'utilisateur a lancé la génération du code QR, la grande boîte d'images sur le côté gauche du formulaire, intitulée "Sortie", devient le point central. Il sert d'affichage dynamique, fournissant un aperçu en temps réel du code QR généré. Ce retour d'information visuel immédiat est essentiel pour que les utilisateurs vérifient leurs choix de conception et s'assurent que le code QR répond à leurs attentes avant de l'enregistrer.

3.5 boutons d'action

Générer un QR

Comment créer une application génératrice de code QR en C# : Figure 18 - Code QR en C#

Le bouton "Générer QR" est un élément de contrôle central dans l'interface de l'application. Placé stratégiquement dans le formulaire, ce bouton est le catalyseur du processus de création du code QR. En cliquant sur ce bouton, l'application prend en compte toutes les données d'entrée et les paramètres de style définis par l'utilisateur et commence à générer un code QR personnalisé.

Enregistrer le code QR

Comment créer une application génératrice de code QR en C# : Figure 19 - Enregistrer

Une fois qu'un code QR a été généré et qu'il est affiché dans la zone de prévisualisation de la sortie, le bouton "Enregistrer QR" entre en jeu. Lorsque l'on clique dessus, une boîte de dialogue d'enregistrement s'ouvre, permettant à l'utilisateur de choisir le format de fichier et l'emplacement d'enregistrement souhaités.

Réinitialiser le formulaire

Comment créer une application génératrice de code QR en C# : Figure 20 - Réinitialisation

D'un simple clic, ce bouton efface toutes les entrées et sélections précédentes, rétablissant ainsi les valeurs par défaut de tous les paramètres. Il s'agit d'un aspect important du formulaire, qui offre un moyen rapide de réinitialiser l'application sans avoir à ajuster manuellement chaque option.

Étape 4 : Écrire la logique du backend

4.1 Configuration et initialisation

Tout d'abord, l'application commence par l'inclusion des espaces de noms nécessaires : IronQR et IronSoftware.Drawing. Ces espaces de noms sont essentiels car ils fournissent les fonctionnalités nécessaires pour générer et manipuler les codes QR et les couleurs dans l'application. La classe personnalisée Color est définie pour faciliter la gestion des couleurs lors de la génération de codes QR, en surchargeant la classe par défaut System.Drawing.Color pour assurer la compatibilité avec les exigences d'IronQR.

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#

Le constructeur de la classe QR_Generator joue un rôle crucial dans la préparation de l'application. C'est ici que les composants de l'application sont initialisés, ce qui est une étape standard dans les applications Windows Forms pour configurer les éléments de l'interface utilisateur du formulaire.

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 : Cette méthode est appelée pour appliquer une clé de licence valide pour la bibliothèque IronQR. L'utilisation d'une clé de licence est obligatoire pour les applications commerciales et pour débloquer toutes les capacités de la bibliothèque IronQR.

EnsureDirectoryExists : Étant donné la nécessité de sauvegarder les codes QR générés, cette méthode permet de s'assurer qu'un répertoire dédié est disponible. Il vérifie si le répertoire "QR Codes" existe dans le chemin de démarrage de l'application et le crée si ce n'est pas le cas.

4.2 Configuration de la clé de licence

Pour que IronQR fonctionne sans limitations, une clé de licence valide doit être appliquée. Ceci est réalisé par la méthode SetLicenseKey, qui est une méthode statique conçue pour configurer la bibliothèque avec votre clé de licence achetée ou d'essai. L'extrait de code ci-dessous illustre comment définir la clé de licence :

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#

Remplacez "YOUR_LICENSE\NKEY" par la clé de licence que vous avez obtenue d'Iron Software. La méthode est appelée dans le constructeur de la classe QR_Generator, ce qui garantit que la licence est appliquée dès le démarrage de l'application et avant toute génération de code QR.

4.3 Gestion de l'annuaire

L'application utilise la méthode EnsureDirectoryExists pour vérifier si le répertoire spécifié pour le stockage des codes QR existe. Si ce n'est pas le cas, il crée le répertoire. Cette méthode prend un paramètre string, qui est le chemin du répertoire à vérifier ou à créer. Voici comment il est mis en œuvre :

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#

Cette méthode utilise l'espace de noms System.IO pour interagir avec le système de fichiers. Il vérifie d'abord si le répertoire au chemin spécifié existe en utilisant Directory.Exists. Si le répertoire n'existe pas(false est renvoyé)il crée ensuite le répertoire en utilisant Directory.CreateDirectory.

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

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 Sélection des couleurs

L'application fournit deux boutons sur l'interface utilisateur, chacun lié à une méthode de sélection des couleurs : btn\_color\_Click pour la couleur du code QR et btn\_background\_Click pour la couleur d'arrière-plan. Ces méthodes s'appuient sur une boîte de dialogue de couleurs pour permettre à l'utilisateur de choisir des couleurs.

Lorsqu'une couleur est sélectionnée à l'aide de la boîte de dialogue des couleurs, la couleur choisie est ensuite convertie en une chaîne de caractères hexadécimaux. Cela est nécessaire car la bibliothèque IronQR exige que les couleurs soient spécifiées au format hexadécimal. La conversion est effectuée par la méthode 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#

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

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#

L'application comprend un bouton(btn_logo_Click) qui, lorsqu'on clique dessus, ouvre une boîte de dialogue permettant à l'utilisateur de sélectionner un fichier image à utiliser comme logo. Cette fonctionnalité est essentielle pour les entreprises ou les particuliers qui souhaitent marquer leurs codes QR. Voici comment se déroule le processus de sélection et d'intégration du logo :

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

Lorsqu'une image est sélectionnée avec succès, l'application tente de la charger et d'en afficher un aperçu. L'objet AnyBitmap, logoBmp, est alors défini avec l'image sélectionnée, que la logique de génération de QR utilisera par la suite.

4.6 Génération de codes QR

Le processus de génération commence lorsque l'utilisateur clique sur le bouton "Generate", qui est lié à la méthode btn\_generate\_Click. Cette méthode agit comme un déclencheur, appelant la fonction GenerateQRCode où réside la logique de génération réelle.

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#

Dans la méthode GenerateQRCode, l'application construit un code QR sur la base des paramètres spécifiés, y compris le texte d'entrée et les options de style. La méthode encapsule la création d'un code QR, en appliquant les couleurs sélectionnées, les dimensions, les marges et, éventuellement, un logo.

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

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

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#

Cette méthode crée un objet QrStyleOptions, qui est ensuite utilisé par la logique de génération du code QR pour appliquer les préférences de l'utilisateur. Les options sont les suivantes :

  • BackgroundColor et Color : Ces propriétés définissent les couleurs d'arrière-plan et d'avant-plan du code QR, ce qui permet de personnaliser l'aspect du code QR en fonction de la marque ou des préférences esthétiques.
  • Dimensions : Cette propriété détermine la taille du code QR, ce qui permet d'adapter le code QR à différents contextes ou supports.
  • Margins : Cette propriété définit la taille de la marge autour du code QR, garantissant qu'il est isolé des éléments environnants, ce qui peut être crucial pour l'évolutivité.
  • Logo : Si l'utilisateur a choisi d'inclure un logo, celui-ci est configuré ici avec des dimensions spécifiques et un rayon d'angle pour un aspect soigné.

4.7 Sauvegarder le code QR

La fonctionnalité de sauvegarde est déclenchée par le bouton "Save", qui est lié à la méthode btn\_save\_Click. Cette méthode appelle SaveQRCode, qui implémente la logique d'enregistrement. Le processus comprend l'affichage d'une boîte de dialogue d'enregistrement de fichier, permettant à l'utilisateur de choisir le format de fichier et l'emplacement pour l'enregistrement du code QR.

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

Cette méthode vérifie si un code QR généré est disponible. Si c'est le cas, il propose à l'utilisateur d'enregistrer le fichier au format PNG ou JPEG. La fonction DetermineImageFormat garantit que l'image est sauvegardée dans le bon format en fonction de l'extension de fichier choisie par l'utilisateur.

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#

Cette flexibilité permet aux utilisateurs de choisir le format qui répond le mieux à leurs besoins, qu'il s'agisse de privilégier la qualité(PNG) ou la taille du fichier(JPEG).

4.8 Réinitialisation de l'application

La fonctionnalité de réinitialisation est liée à un bouton "Reset", qui invoque la méthode btn\_reset\_Click. Cette méthode appelle à son tour ResetFields, une fonction conçue pour effacer toutes les entrées de l'utilisateur et rétablir les valeurs par défaut de tous les paramètres, y compris les champs de texte, les sélections de couleurs et le logo sélectionné.

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#

Cette méthode réinitialise chaque composant impliqué dans la génération du code QR. Par exemple, il efface le texte du code QR, règle les dimensions et les marges sur les valeurs par défaut et supprime les couleurs ou les logos sélectionnés.

4.9 Gestion des erreurs

L'application utilise la méthode ShowError pour afficher les messages d'erreur de manière conviviale. Cette méthode prend deux paramètres : un titre et un message, qui fournissent à l'utilisateur le contexte de l'erreur. Voici comment il est mis en œuvre :

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#

Cette méthode est utilisée dans différentes parties de l'application afin de garantir qu'en cas d'erreur, l'utilisateur est rapidement informé par un message clair et concis. Par exemple, si une erreur survient lors du chargement du logo ou pendant le processus de génération du code QR, l'application appelle ShowError pour afficher les détails du problème.

4.10 Exemple de code complet

Voici le code complet qui vous aidera à comprendre le code beaucoup plus facilement :

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#

Étape 5 : Exécuter l'application

Lorsque l'application est exécutée, la fenêtre principale apparaît comme le montre l'image ci-dessous. La mise en page est soigneusement organisée en sections pour l'entrée, le style, la sortie et les actions.

Comment créer une application génératrice de code QR en C# : Figure 21 - Sortie de l'application

La première étape du processus consiste à saisir des données dans le champ "Input QR Text". Ces données constitueront le contenu du code QR, tel qu'une URL ou des informations textuelles. Ensuite, pour personnaliser le code QR, nous sélectionnons un logo en cliquant sur le bouton "Select Logo". Lors de la sélection, le logo est placé de manière visible dans la boîte de prévisualisation adjacente au bouton, confirmant ainsi son intégration dans la conception du code QR.

Comment créer une application génératrice de code QR en C# : Figure 22 - Logo

Après la sélection du logo, nous choisissons les couleurs d'avant-plan et d'arrière-plan du code QR. Après avoir cliqué sur les boutons respectifs, les couleurs choisies sont reflétées dans les cases d'affichage des couleurs à côté de chaque bouton, ce qui nous donne une confirmation visuelle immédiate de nos choix.

Comment créer une application génératrice de code QR en C# : Figure 23 - Sélection de la couleur

Pour ce code QR particulier, nous avons fixé les dimensions à 500, afin que le code ait une taille adaptée à nos besoins, et nous avons ajusté les marges à 20, ce qui permet de créer un tampon autour du code QR pour éviter les problèmes de lecture.

Comment créer une application génératrice de code QR en C# : Figure 24 - Dimensions

Une fois toutes les entrées et les options de style définies, nous procédons à la génération du code QR en cliquant sur le bouton "Generate QR". L'application traite nos données et affiche le code QR fraîchement créé dans la zone d'image de sortie.

Comment créer une application génératrice de codes QR en C# : Figure 25 - Sortie de la lecture des codes QR

Pour enregistrer le code QR généré, il suffit de cliquer sur le bouton "Enregistrer QR". Cette action ouvre une boîte de dialogue d'enregistrement, qui nous permet de choisir la destination et le format de fichier de notre image de code QR.

Comment créer une application génératrice de code QR en C# : Figure 26 - Boîte de dialogue Enregistrer

Une fois enregistré, un message de réussite confirme que le code QR a été enregistré avec succès.

Comment créer une application génératrice de code QR en C# : Figure 27 - Message de réussite

Si nous devons recommencer ou créer un nouveau code QR, cliquer sur le bouton "Réinitialiser le formulaire" ramène le formulaire à son état d'origine, en effaçant tous les champs et toutes les sélections, prêt pour la prochaine génération de code QR.

Comment créer une application génératrice de code QR en C# : Figure 28 - Formulaire de réinitialisation

Voici le code QR enregistré généré par IronQR :

Comment créer une application génératrice de code QR en C# : Figure 29 - Sortie du code QR

Conclusion

En conclusion, ce guide vous a permis de découvrir comment générer des codes QR à l'aide de la bibliothèque IronQR dans une application C#. En décomposant les étapes de la configuration de votre projet dans Visual Studio, de l'intégration de la bibliothèque IronQR, de la conception d'une interface conviviale et de l'écriture de la logique d'arrière-plan, nous avons démontré à quel point il est accessible d'ajouter une fonctionnalité de code QR à vos applications.

Pour ceux qui souhaitent explorer plus avant les capacités d'IronQR, il est intéressant de noter qu'IronQR offre un service d'aide à l'achat d'actionsessai gratuit pour vous aider à démarrer. Si vous décidez d'intégrer IronQR dans vos projets, les licences commencent à $749, fournissant une solution rentable pour la génération de codes QR de qualité professionnelle.

< PRÉCÉDENT
Comment lire les codes QR en C#
SUIVANT >
Comment générer un code QR à l'aide de QRCoder comparé à IronQR dans .NET 6