C# QR Code Generator Application

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 à l'aide de C# ! Les codes QR et les DLL de codes-barres .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 efficace de partager des liens, ces codes peuvent s'avérer extrêmement utiles. Dans ce guide, nous allons démontrer comment générer efficacement des codes QR à l'aide d'IronQR, en veillant à ce que vous puissiez 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 fonction de générateur de code QR à votre application ou que vous soyez simplement curieux de savoir comment cela se passe, vous êtes au bon endroit. Commençons par le commencement.

Installer la bibliothèque de génération de code QR dans 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 de code QR en 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 distinguishes itself with its advanced features, including the ability to read QR codes and generate QR codes, support for multiple image formats, and customization options like resizing, styling, and adding logos to QR codes.

Quelques caractéristiques clés d'IronQR

IronQR étend ses fonctionnalités au-delà de la génération de codes QR de base, en proposant plusieurs fonctions conçues pour s'adapter à 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 intégré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.

: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 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'affectant à 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 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 du 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 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 de mode de lecture QR personnalisé

IronQR propose différents modes de lecture des codes QR, ce qui le rend polyvalent pour des besoins variés.

  • Mixed Scan Mode : équilibre entre vitesse et précision, utile pour les codes QR qui ne sont pas clairs ou partiellement cachés.
  • Machine Learning (ML) Scan Mode : 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 balayage de base : le moyen le plus simple et le plus rapide pour obtenir des codes QR clairs et directs.
: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 fonctionnalités avancées de lecture de codes QR d'IronQR offrent une approche complète de la numérisation et du décodage des codes QR. Cet ensemble de fonctionnalités va au-delà de la lecture de base, offrant un niveau plus approfondi d'interaction et d'extraction de données.

: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 les étapes suivantes. Ce guide vous guidera dans la configuration d'une application de formulaire Windows, l'installation de la bibliothèque IronQR, l'écriture du code pour générer un code QR et la compréhension de la sortie.

É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 Windows Forms App comme type de projet. Veillez à choisir le langage C#.

    Windows Forms App

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

    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 le biais de différentes méthodes.

Installation à l'aide du gestionnaire de paquets NuGet

  1. Cliquez avec le bouton droit de la souris 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 paquets NuGet
  3. Trouvez IronQR dans la liste et cliquez sur Install à côté.

    Installer IronQR

Installation à l'aide du gestionnaire de paquets NuGet Console

  • Accédez à Outils > NuGet Package Manager > Console du gestionnaire de paquets.
    NuGet Package Manager
  • Tapez Install-Package IronQR et appuyez sur Enter.
  • Installer IronQR

    Étape 3 : Conception de l'interface utilisateur

    QR Code Generator

    3.1 En-tête de titre

    Générer un code QR

    Au lancement de l'application QR Code Generator, les utilisateurs sont immédiatement confrontés à un en-tête saisissant intitulé "QR Generator IronQR", présenté dans une police de caractères audacieuse et faisant autorité.

    3.2 Section de saisie

    Saisie de texte pour le code QR

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

    Select Logo

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

    Configuration des couleurs

    Background Color

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

    3.3 Paramètres de style

    Styling

    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 de la sortie

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

    QR Output

    3.5 Boutons d'action

    Générer un QR

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

    QR Code in C#

    Enregistrer le code QR

    Ouvre une boîte de dialogue pour enregistrer le code QR.

    Save

    Réinitialiser le formulaire

    Efface toutes les entrées et sélections précédentes.

    Reset

    Étape 4 : écrire la logique du backend

    4.1 Configuration et initialisation

    Inclut les espaces de noms nécessaires : IronQR et IronSoftware.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 "YOUR_LICENSE_KEY" par votre véritable clé de licence.

    4.3 Gestion des répertoires

    Vérifier ou créer 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 en tant que qrCodesDirectory, qui combine le chemin de démarrage de l'application avec un nom de dossier "QR Codes" :

    :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 des couleurs

    Fournit des composants de dialogue en 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 IronSoftware.Drawing.Color à l'aide de 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. Elle met également à jour l'interface utilisateur pour refléter le nouveau choix de couleurs :

    :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 codes QR

    Contient une logique permettant de générer des codes QR en fonction des entrées de 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 des erreurs, 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 Sauvegarder le code QR

    Gestion de 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éinitialisation de l'application

    Efface les entrées de 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 combinant toutes les caractéristiques 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

    Etape 5 : Exécuter l'application

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

    Conclusion

    En conclusion, ce guide vous a accompagné tout au long du processus de génération de codes QR à l'aide de 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 de backend, nous avons démontré à quel point il est accessible d'ajouter une fonctionnalité de code QR à vos applications.

    Pour ceux qui souhaitent explorer davantage les capacités d'IronQR, il convient de noter qu'IronQR propose un essai gratuit pour commencer. Si vous décidez d'intégrer IronQR à vos projets, les licences commencent à $799, ce qui constitue 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 47,669 | Version : 2025.11 vient de sortir