Application C# de Générateur Code QR

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

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

Install Générateur de Code QR Library in C

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

Première étape :
green arrow pointer


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

Install-Package IronQR

IronQR : Bibliothèque QR C

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

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

Quelques fonctionnalités clés d'IronQR

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

Lire les codes QR

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

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

IronQr.License.LicenseKey = "License-Key";

// Load the image file that contains the QR Code
var inputImage = AnyBitmap.FromFile("QRCode.png");

// Prepare the image for QR code detection
QrImageInput qrInput = new QrImageInput(inputImage);

// Initialize the QR Code reader
QrReader qrReader = new QrReader();

// Execute QR Code reading on the provided image
IEnumerable<QrResult> qrResults = qrReader.Read(qrInput);

// Assuming you have the QR results in qrResults as before
foreach (var result in qrResults)
{
    Console.WriteLine(result.Value); // Print the QR code content to the console
}
Imports IronQr
Imports IronSoftware.Drawing
Imports System
Imports System.Collections.Generic

IronQr.License.LicenseKey = "License-Key"

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

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

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

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

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

Le processus commence par l'intégration des espaces de noms nécessaires : IronQr et 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 vous lancer dans le processus de lecture du code QR, il est essentiel d'activer le logiciel avec votre clé de licence en l'attribuant à 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").

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

Le cœur de cette fonctionnalité réside dans la classe QrReader, qui est instanciée et utilisée pour effectuer l'opération de lecture 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 parcourt la collection de résultats à l'aide d'une boucle. Chaque objet contient des propriétés telles que la valeur du code QR, qui peuvent être consultées et affichées.

Options de mode de lecture QR personnalisé

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

  • Mode de numérisation mixte : Offre un équilibre entre vitesse et précision, utile pour les codes QR peu clairs ou partiellement cachés.
  • Mode de numérisation par apprentissage automatique (ML) : Utilise une technologie avancée pour lire les codes QR endommagés ou difficiles à lire, idéal pour les scénarios difficiles à détecter.
  • Mode de numérisation basique : La méthode la plus simple et la plus rapide pour des codes QR clairs et sans ambiguïté.
:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-2.cs
using IronQr;
using IronQr.Enum;
using IronSoftware.Drawing;
using System.Collections.Generic;

IronQr.License.LicenseKey = "License-Key";

// Load the image file that contains the QR Code
var inputImage = AnyBitmap.FromFile("QRCode.png");

QrImageInput mixedScanInput = new QrImageInput(inputImage, QrScanMode.OnlyDetectionModel);
IEnumerable<QrResult> mixedScanResults = new QrReader().Read(mixedScanInput);

QrImageInput mlScanInput = new QrImageInput(inputImage, QrScanMode.OnlyDetectionModel);
IEnumerable<QrResult> mlScanResults = new QrReader().Read(mlScanInput);

QrImageInput basicScanInput = new QrImageInput(inputImage, QrScanMode.OnlyBasicScan);
IEnumerable<QrResult> basicScanResults = new QrReader().Read(basicScanInput);
Imports IronQr
Imports IronQr.Enum
Imports IronSoftware.Drawing
Imports System.Collections.Generic

IronQr.License.LicenseKey = "License-Key"

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

Dim mixedScanInput As New QrImageInput(inputImage, QrScanMode.OnlyDetectionModel)
Dim mixedScanResults As IEnumerable(Of QrResult) = (New QrReader()).Read(mixedScanInput)

Dim mlScanInput As New QrImageInput(inputImage, QrScanMode.OnlyDetectionModel)
Dim mlScanResults As IEnumerable(Of QrResult) = (New QrReader()).Read(mlScanInput)

Dim basicScanInput As New QrImageInput(inputImage, QrScanMode.OnlyBasicScan)
Dim basicScanResults As IEnumerable(Of QrResult) = (New QrReader()).Read(basicScanInput)
$vbLabelText   $csharpLabel

Lire les codes QR avancés

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

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

IronQr.License.LicenseKey = "License-Key";

var imageToScan = AnyBitmap.FromFile("QRCode.png");

QrImageInput qrInput = new QrImageInput(imageToScan);

QrReader qrScanner = new QrReader();

IEnumerable<QrResult> scanResults = qrScanner.Read(qrInput);

foreach (QrResult qrResult in scanResults)
{

    Console.WriteLine(qrResult.Value);

    Console.WriteLine(qrResult.Url);

    foreach (IronSoftware.Drawing.PointF coordinate in qrResult.Points)
    {
        Console.WriteLine($"{coordinate.X}, {coordinate.Y}");
    }
}
Imports IronQr
Imports IronSoftware.Drawing
Imports System
Imports System.Collections.Generic

IronQr.License.LicenseKey = "License-Key"

Dim imageToScan = AnyBitmap.FromFile("QRCode.png")

Dim qrInput As New QrImageInput(imageToScan)

Dim qrScanner As New QrReader()

Dim scanResults As IEnumerable(Of QrResult) = qrScanner.Read(qrInput)

For Each qrResult As QrResult In scanResults

	Console.WriteLine(qrResult.Value)

	Console.WriteLine(qrResult.Url)

	For Each coordinate As IronSoftware.Drawing.PointF In qrResult.Points
		Console.WriteLine($"{coordinate.X}, {coordinate.Y}")
	Next coordinate
Next qrResult
$vbLabelText   $csharpLabel

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

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

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

    Application Windows Forms

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

    Configuration du projet

Étape 2 : Installer la bibliothèque IronQR

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

Installer en utilisant le Package Manager NuGet

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

    Installer IronQR

Installer en utilisant la console du Package Manager NuGet

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

    Étape 3 : Concevoir l'interface

    Générateur de Code QR

    3.1 En-tête de titre

    Générer un code QR

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

    3.2 Section d'entrée

    Saisie de texte pour le code QR

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

    Sélectionner le logo

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

    Configuration des couleurs

    Couleur de fond

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

    3.3 Paramètres de style

    stylisme

    Paramètres de dimension

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

    Paramètres de marge

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

    3.4 Aperçu du résultat

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

    Sortie QR

    3.5 Boutons d'action

    Générer un QR

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

    Code QR en C#

    Enregistrer le code QR

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

    Enregistrer

    Réinitialiser le formulaire

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

    Réinitialiser

    Étape 4 : Écrire la logique du backend

    4.1 Configuration et initialisation

    Comprend 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 clé de licence réelle.

    4.3 Gestion des répertoires

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

    :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-7.cs
    private static void EnsureDirectoryExists(string path)
    {
        if (!System.IO.Directory.Exists(path))
        {
            System.IO.Directory.CreateDirectory(path);
        }
    }
    Private Shared Sub EnsureDirectoryExists(ByVal path As String)
    	If Not System.IO.Directory.Exists(path) Then
    		System.IO.Directory.CreateDirectory(path)
    	End If
    End Sub
    $vbLabelText   $csharpLabel

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

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

    4.4 Sélection de couleur

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

    :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-9.cs
    private string ColorToHex(System.Drawing.Color color)
    {
        return $"#{color.R:X2}{color.G:X2}{color.B:X2}";
    }
    Private Function ColorToHex(ByVal color As System.Drawing.Color) As String
    	Return $"#{color.R:X2}{color.G:X2}{color.B:X2}"
    End Function
    $vbLabelText   $csharpLabel

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

    :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-10.cs
    private void UpdateColor(ref Color targetColor, Control display, bool isBackground)
    {
        if (select_color.ShowDialog() == DialogResult.OK)
        {
            var hexColor = ColorToHex(select_color.Color);
            targetColor = new Color(hexColor);
            display.BackColor = select_color.Color;
        }
    }
    Private Sub UpdateColor(ByRef targetColor As Color, ByVal display As Control, ByVal isBackground As Boolean)
    	If select_color.ShowDialog() = DialogResult.OK Then
    		Dim hexColor = ColorToHex(select_color.Color)
    		targetColor = New Color(hexColor)
    		display.BackColor = select_color.Color
    	End If
    End Sub
    $vbLabelText   $csharpLabel

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

    :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-11.cs
    private void btn_logo_Click(object sender, EventArgs e)
    {
        if (select_logo.ShowDialog() == DialogResult.OK)
        {
            try
            {
                logoBmp = new AnyBitmap(select_logo.FileName);
                selected_logo.Image = Image.FromFile(select_logo.FileName);
            }
            catch (Exception ex)
            {
                ShowError("An error occurred while loading the logo", ex.Message);
            }
        }
    }
    Private Sub btn_logo_Click(ByVal sender As Object, ByVal e As EventArgs)
    	If select_logo.ShowDialog() = DialogResult.OK Then
    		Try
    			logoBmp = New AnyBitmap(select_logo.FileName)
    			selected_logo.Image = Image.FromFile(select_logo.FileName)
    		Catch ex As Exception
    			ShowError("An error occurred while loading the logo", ex.Message)
    		End Try
    	End If
    End Sub
    $vbLabelText   $csharpLabel

    4.6 Génération de code QR

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

    :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-12.cs
    private void btn_generate_Click(object sender, EventArgs e)
    {
        GenerateQRCode();
    }
    Private Sub btn_generate_Click(ByVal sender As Object, ByVal e As EventArgs)
    	GenerateQRCode()
    End Sub
    $vbLabelText   $csharpLabel

    L'objet QrOptions définit le niveau de correction d'erreur, améliorant 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:

    :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-14.cs
    private QrStyleOptions CreateStyleOptions()
    {
        return new QrStyleOptions
        {
            BackgroundColor = bgColor,
            Color = color,
            Dimensions = txt_dimension.Value > 0 ? Convert.ToInt32(txt_dimension.Value) : throw new ArgumentException("Please select valid dimensions!"),
            Margins = Convert.ToInt32(txt_margin.Value),
            Logo = logoBmp != null ? new QrLogo { Bitmap = logoBmp, Width = 50, Height = 50, CornerRadius = 5 } : null
        };
    }
    Private Function CreateStyleOptions() As QrStyleOptions
    'INSTANT VB TODO TASK: Throw expressions are not converted by Instant VB:
    'ORIGINAL LINE: return new QrStyleOptions { BackgroundColor = bgColor, Color = color, Dimensions = txt_dimension.Value > 0 ? Convert.ToInt32(txt_dimension.Value) : throw new ArgumentException("Please select valid dimensions!"), Margins = Convert.ToInt32(txt_margin.Value), Logo = logoBmp != null ? new QrLogo { Bitmap = logoBmp, Width = 50, Height = 50, CornerRadius = 5 } : null };
    	Return New QrStyleOptions With {
    		.BackgroundColor = bgColor,
    		.Color = color,
    		.Dimensions = If(txt_dimension.Value > 0, Convert.ToInt32(txt_dimension.Value), throw New ArgumentException("Please select valid dimensions!")),
    		.Margins = Convert.ToInt32(txt_margin.Value),
    		.Logo = If(logoBmp IsNot Nothing, New QrLogo With {
    			.Bitmap = logoBmp,
    			.Width = 50,
    			.Height = 50,
    			.CornerRadius = 5
    		}, Nothing)
    	}
    End Function
    $vbLabelText   $csharpLabel

    4.7 Enregistrement du code QR

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

    :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-15.cs
    private void btn_save_Click(object sender, EventArgs e)
    {
        SaveQRCode();
    }
    
    private void SaveQRCode()
    {
        if (pictureBox.Image == null)
        {
            MessageBox.Show("There is no QR code to save.", "Error");
            return;
        }
    
        saveFileDialog.Filter = "PNG Files|*.png|JPEG Files|*.jpg";
        saveFileDialog.Title = "Save QR Code";
        saveFileDialog.FileName = "QRCode";
    
        if (saveFileDialog.ShowDialog() == DialogResult.OK)
        {
            try
            {
                pictureBox.Image.Save(saveFileDialog.FileName, DetermineImageFormat(saveFileDialog.FileName));
                MessageBox.Show("QR Code has been saved!", "Success");
            }
            catch (Exception ex)
            {
                ShowError("An error occurred while saving the QR code", ex.Message);
            }
        }
    }
    Private Sub btn_save_Click(ByVal sender As Object, ByVal e As EventArgs)
    	SaveQRCode()
    End Sub
    
    Private Sub SaveQRCode()
    	If pictureBox.Image Is Nothing Then
    		MessageBox.Show("There is no QR code to save.", "Error")
    		Return
    	End If
    
    	saveFileDialog.Filter = "PNG Files|*.png|JPEG Files|*.jpg"
    	saveFileDialog.Title = "Save QR Code"
    	saveFileDialog.FileName = "QRCode"
    
    	If saveFileDialog.ShowDialog() = DialogResult.OK Then
    		Try
    			pictureBox.Image.Save(saveFileDialog.FileName, DetermineImageFormat(saveFileDialog.FileName))
    			MessageBox.Show("QR Code has been saved!", "Success")
    		Catch ex As Exception
    			ShowError("An error occurred while saving the QR code", ex.Message)
    		End Try
    	End If
    End Sub
    $vbLabelText   $csharpLabel
    :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-16.cs
    private System.Drawing.Imaging.ImageFormat DetermineImageFormat(string filePath)
    {
        return System.IO.Path.GetExtension(filePath).ToLower() == ".jpg" ? System.Drawing.Imaging.ImageFormat.Jpeg : System.Drawing.Imaging.ImageFormat.Png;
    }
    Private Function DetermineImageFormat(ByVal filePath As String) As System.Drawing.Imaging.ImageFormat
    	Return If(System.IO.Path.GetExtension(filePath).ToLower() = ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg, System.Drawing.Imaging.ImageFormat.Png)
    End Function
    $vbLabelText   $csharpLabel

    4.8 Réinitialiser l'application

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

    :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-17.cs
    private void btn_reset_Click(object sender, EventArgs e)
    {
        ResetFields();
    }
    
    private void ResetFields()
    {
        txt_QR.Text = string.Empty;
        txt_dimension.Value = 200;
        txt_margin.Value = 0;
        bgColor = Color.White;
        color = Color.Black;
        txt_selected_color.BackColor = System.Drawing.Color.White;
        txt_selected_bgcolor.BackColor = System.Drawing.Color.Black;
        logoBmp = null;
        selected_logo.Image = null;
        pictureBox.Image = null;
    }
    Private Sub btn_reset_Click(ByVal sender As Object, ByVal e As EventArgs)
    	ResetFields()
    End Sub
    
    Private Sub ResetFields()
    	txt_QR.Text = String.Empty
    	txt_dimension.Value = 200
    	txt_margin.Value = 0
    	bgColor = Color.White
    	color = Color.Black
    	txt_selected_color.BackColor = System.Drawing.Color.White
    	txt_selected_bgcolor.BackColor = System.Drawing.Color.Black
    	logoBmp = Nothing
    	selected_logo.Image = Nothing
    	pictureBox.Image = Nothing
    End Sub
    $vbLabelText   $csharpLabel

    4.9 Gestion des erreurs

    Affiche les messages d'erreur aux utilisateurs.

    :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-code-generator-application-18.cs
    private static void ShowError(string title, string message)
    {
        MessageBox.Show($"{title}: {message}", "Error");
    }
    Private Shared Sub ShowError(ByVal title As String, ByVal message As String)
    	MessageBox.Show($"{title}: {message}", "Error")
    End Sub
    $vbLabelText   $csharpLabel

    4.10 Exemple de code complet

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

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

    Étape 5 : Exécuter l'application

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

    Conclusion

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

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

    Questions Fréquemment Posées

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Pour installer une bibliothèque de code QR comme IronQR dans Visual Studio, utilisez le Package Manager NuGet. Recherchez 'IronQR' et cliquez sur 'Installer' pour l'ajouter à votre projet. Alternativement, utilisez la Console du Package Manager 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 63,676 | Version : 2026.4 vient de sortir
    Still Scrolling Icon

    Vous faites encore défiler ?

    Vous voulez une preuve rapidement ? PM > Install-Package IronQR
    exécuter un échantillon regarder votre URL devenir un code QR.