IRONSOFTWAREHOME
COMPARER À D'AUTRES COMPOSANTS

DevExpress Barcode vs IronBarcode : Comparaison de la bibliothèque de codes-barres C#

Curtis Chau
Curtis Chau
Updated: 26 avril 2026

#Mescius ComponentOne C1BarCodevs IronBarcode

Le contrôle de code-barres MESCIUS ComponentOne (anciennement GrapeCity, rebrandé en 2023) génère des codes-barres à l'intérieur de Windows Forms, WPF, WinUI, Blazor, et des applications ASP.NET Core MVC. Il remplit parfaitement ces fonctions : l'API est claire, la qualité de la sortie est solide et il s'intègre naturellement au concepteur WinForms. Mais son champ d'action est limité. Il ne peut pas lire les codes-barres. Les éditions WinForms et WPF fonctionnent sur un framework cible uniquement Windows. Et ce n'est pas un produit autonome — il est livré dans le cadre de ComponentOne Studio Enterprise, un abonnement de 1 299 $/développeur/an qui comprend plus de 100 contrôles d'interface utilisateur. Si vous évaluez les options de codes-barres pour un projet .NET et que vous avez trouvé ComponentOne dans une liste comparative, cet article explique ce que cela signifie concrètement.

Comprendre le code-barres C1

C1BarCode est un contrôle visuel. Le flux de travail de génération crée une instance, définit des propriétés, et appelle GetImage() pour récupérer un System.Drawing.Image :

// ComponentOne C1BarCode
using C1.Win.Barcode;
using C1.BarCode;
using System.Drawing;

// License must be set before first use
C1.C1License.Key = "YOUR-COMPONENTONE-KEY";

var barcode = new C1BarCode();
barcode.CodeType = CodeType.Code128;
barcode.Text = "ITEM-12345";
barcode.BarHeight = 100;
barcode.ModuleSize = 2;
barcode.ShowText = true;
barcode.CaptionPosition = CaptionPosition.Below;

using var image = barcode.GetImage();
image.Save("barcode.png", System.Drawing.Imaging.ImageFormat.Png);

L'API de définition des propriétés est familière aux développeurs WinForms — elle correspond directement à l'interface du concepteur. CodeType, BarHeight, ModuleSize, ShowText, et CaptionPosition sont toutes des propriétés visibles par le concepteur qui fonctionnent de manière identique dans le code.

C1BarCode prend en charge 38 symbologies couvrant les formats 1D et 2D courants : Code 39, Code 128, EAN-8, EAN-13, UPC-A, UPC-E, ITF, QR Code, PDF417 et DataMatrix entre autres. Pour la génération de codes-barres, il couvre les cas d'utilisation courants.

API de lecture inexistante

Il ne s'agit pas d'une lacune que peut combler une option de configuration. Il n'y a pas de classe C1BarCodeReader. Il n'y a pas de méthode Decode() sur C1BarCode. Le système de contrôle des codes-barres de ComponentOne est conçu pour la génération uniquement.

Si votre application a besoin de scanner des codes-barres à partir d'images téléchargées, de vérifier des étiquettes imprimées, de traiter des documents contenant des codes intégrés ou d'extraire des données de codes QR dans une API Web, rien de tout cela n'est possible avec C1BarCode. Il vous faudrait une bibliothèque distincte pour la lecture, ce qui soulève la question de savoir pourquoi payer pour un composant de génération de codes-barres uniquement au sein d'une Suite Enterprise de plus de 100 contrôles alors que des bibliothèques de codes-barres autonomes couvrent les deux opérations.

L'absence d'une API de lecture n'est pas inhabituelle pour les contrôles de code-barres WinForms conçus pour l'impression. Ce qui en fait un point de décision, c'est l'évolution des exigences — et les exigences en matière de codes-barres évoluent presque toujours.

Contrainte Windows uniquement

Les éditions WinForms et WPF de C1BarCode nécessitent une configuration de framework cible spécifique à Windows :

<!-- ComponentOne WinForms edition target -->
<TargetFramework>net8.0-windows</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
XML

Le moniker du framework cible net8.0-windows et UseWindowsForms ne sont pas des préférences optionnelles. C1.Win.BarCode dépend de types System.Windows.FormsUserControl, PaintEventArgs, Graphics — qui existent uniquement sur Windows. Supprimer net8.0-windows casse la construction. ComponentOne livre des éditions Blazor et ASP.NET Core MVC du contrôle de code-barres qui ciblent les TFM multiplateformes, mais les packages WinForms et WPF sont liés à Windows.

En revanche, Code-barres IronBarcode cible net8.0 (ou tout TFM pris en charge) sans restrictions de plateforme :

<!-- Code-barres IronBarcode — standard cross-platform target -->
<TargetFramework>net8.0</TargetFramework>
<!-- Non UseWindowsForms required -->
<!-- Runs on Linux, macOS, Docker, Azure Functions -->
XML

Cela a son importance dans plusieurs situations pratiques :

  • Azure App Service sur Linux : plan par défaut pour les nouveaux déploiements d'App Service. net8.0-windows ne peut pas le cibler.
  • Conteneurs Docker : les conteneurs Linux sont la norme. Un conteneur Windows est plus volumineux, coûte plus cher et n'est pas disponible dans de nombreux niveaux de cloud.
  • API Web ASP.NET Core : Un point de terminaison de génération de codes-barres qui ne peut être déployé que sur Windows constitue une contrainte de déploiement que l'équipe devra éventuellement supprimer.
  • Azure Functions : le plan de consommation s'exécute sous Linux. Une fonction générant un code-barres avec un objectif net8.0-windows ne peut pas être déployée sur le plan de consommation.
  • Développement sous macOS : Les développeurs sur macOS ne peuvent pas exécuter un projet net8.0-windows localement, même pour tester la logique de génération.

La contrainte de plateforme ne pose pas de problème si votre application est un outil de bureau WinForms qui ne fonctionnera que sous Windows. Cela devient problématique dès lors que les exigences de déploiement incluent un environnement Linux ou cloud.

Regroupement de Suite

Le contrôle C1BarCode est vendu dans le cadre de ComponentOne Studio Enterprise, qui comprend la suite complète de contrôles ComponentOne pour WinForms, WPF, Blazor, et ASP.NET. Le prix pour ComponentOne Studio Enterprise est de 1 299 $ par développeur par an (abonnement); les éditions monoplateformes (WinForms ou WPF) sont de 799 $ par développeur par an.

Cette Suite comprend plus de 100 composants : grilles, graphiques, planificateurs, contrôles de saisie, concepteurs de rapports, contrôles de carte, jauges, et bien plus encore. Si vous construisez une application lourde en données et avez besoin de nombreux de ces contrôles, le prix de la suite peut avoir du sens. Si vous avez besoin de génération de codes-barres et êtes arrivé à ComponentOne parce qu'il est apparu dans une recherche, vous achetez une suite d'interface utilisateur d'entreprise principalement pour un seul contrôle.

Le package NuGet est C1.Win.BarCode pour WinForms (avec C1.WPF.BarCode, C1.WinUI.BarCode, et C1.Blazor.BarCode pour d'autres plateformes) et est licencié via l'abonnement à ComponentOne Studio. Pour les développeurs désirant une fonctionnalité de code-barres sans la suite complète, il n'y a pas de niveau de licence de code-barres uniquement.

La structure de prix d'IronBarcode est différente : c'est une bibliothèque de code-barres autonome avec une licence perpétuelle démarrant à 749 $ pour un seul développeur (Lite), 1 499 $ pour trois (Plus), 2 999 $ pour dix (Professional), et 5 999 $ pour un nombre illimité de développeurs. Il n'y a pas de contrôle de grille, pas de bibliothèque de graphiques, pas de concepteur de rapports — seulement la fonctionnalité de code-barres que vous recherchez.

Personnalisation du code QR

Les deux bibliothèques prennent en charge la génération de codes QR avec des options de personnalisation. Le style de l'API diffère sensiblement.

Approche par définition de propriété ComponentOne :

// ComponentOne — QR code with error correction and color
using C1.Win.Barcode;
using C1.BarCode;
using System.Drawing;

C1.C1License.Key = "YOUR-COMPONENTONE-KEY";

var barcode = new C1BarCode();
barcode.CodeType = CodeType.QRCode;
barcode.Text = "https://example.com/product/4821";
barcode.QRCodeVersion = QRCodeVersion.Version5;
barcode.QRCodeErrorCorrectionLevel = QRCodeErrorCorrectionLevel.High;
barcode.QRCodeModel = QRCodeModel.Model2;
barcode.ForeColor = Color.DarkBlue;
barcode.BackColor = Color.White;
barcode.ModuleSize = 4;

using var image = barcode.GetImage();
image.Save("product-qr.png", System.Drawing.Imaging.ImageFormat.Png);

Chaîne de caractères fluide IronBarcode :

// Code-barres IronBarcode — QR code with error correction and color
// NuGet: dotnet add package IronBarcode
using IronBarCode;
using System.Drawing;

QRCodeWriter.CreateQrCode(
        "https://example.com/product/4821",
        300,
        QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .ChangeBarCodeColor(Color.DarkBlue)
    .SaveAsPng("product-qr.png");

L'approche ComponentOne nécessite l'instanciation d'un objet C1BarCode et la définition de plusieurs propriétés avant d'appeler GetImage(). L'QRCodeWriter d'IronBarcode utilise une chaîne fluide — chaque opération renvoie l'objet code-barres, et vous appelez .SaveAsPng() à la fin. Il n'y a pas d'instance à gérer.

IronBarcode prend également en charge l'intégration de logos dans les codes QR, contrairement à C1BarCode :

// QR code with embedded brand logo
QRCodeWriter.CreateQrCode("https://example.com/track/8821", 500)
    .AddBrandLogo("company-logo.png")
    .ChangeBarCodeColor(Color.DarkBlue)
    .SaveAsPng("branded-qr.png");

Comprendre IronBarcode

IronBarcode est une bibliothèque .NET autonome de gestion des codes-barres, couvrant la génération et la lecture. Il s'installe à partir de NuGet (dotnet add package IronBarcode), cible tout TFM .NET pris en charge sans restrictions de plateforme, et fonctionne sur Windows, Linux, macOS, Docker, Azure, et AWS Lambda.

La face lecture prend en charge nativement les documents PDF :

// Read barcodes from a PDF — no image extraction needed
using IronBarCode;

var results = BarcodeReader.Read("invoice.pdf");
foreach (var barcode in results)
{
    Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format}{barcode.Value}");
}

Pour les scénarios à haut débit, BarcodeReaderOptions contrôle le compromis entre la vitesse et la précision, ainsi que la détection multi-code-barres :

// Multi-barcode read with performance options
using IronBarCode;

var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
    ExpectBarcodeTypes = BarcodeEncoding.Code128 | BarcodeEncoding.QRCode
};

var results = BarcodeReader.Read("warehouse-manifest.jpg", options);

La génération couvre les formats standard avec une API statique cohérente :

// Code 128 generation to file
BarcodeWriter.CreateBarcode("SHIP-20240312-7834", BarcodeEncoding.Code128)
    .SaveAsPng("shipping-label.png");

// génération de code QR to byte array (for HTTP response)
byte[] qrBytes = QRCodeWriter.CreateQrCode("https://example.com/order/7734", 400)
    .ToPngBinaryData();

Plateformes prises en charge : Windows, Linux, macOS, Docker, Azure (App Service et Functions), AWS Lambda. Versions .NET prises en charge : .NET Framework 4.6.2+, .NET Core 3.1+, et .NET 5/6/7/8.

Comparaison des fonctionnalités

FonctionMescius ComponentOne C1BarCodeCode-barres IronBarcode
génération de codes-barresOuiOui
Lecture de codes-barresNonOui
génération de code QROuiOui
Intégration de logo QRNonOui
Saisie PDF pour la lectureN/A (pas de lecture)Oui (natif)
Cible de plateforme .NET (éditions WinForms/WPF)net8.0-windowsTout TFM (net8.0, etc.)
UseWindowsForms requis (édition WinForms)OuiNon
Déploiement Linux / DockerÉditions Blazor/ASP.NET MVC uniquementOui
Déploiement macOSÉditions Blazor/ASP.NET MVC uniquementOui
Azure Functions (Linux)Éditions Blazor/ASP.NET MVC uniquementOui
Côté serveur ASP.NET CoreÉdition ASP.NET Core MVCOui
package NuGet autonomePackages sous licence suiteOui
Tarification autonomeN/AÀ partir de 749 $ perpétuel (Lite)
Tarifs des Suite1 299 $/développeur/an Enterprise ; 799 $/développeur/an mono-plateformeN/A
API de génération FluentNon (créateur de propriété)Oui
BarcodeReader.Read()NonOui
BarcodeWriter.CreateBarcode()NonOui
QRCodeWriter.CreateQrCode()NonOui
Versions .NET prises en charge.NET 6+ (Windows for WinForms/WPF).NET Framework 4.6.2+, .NET Core 3.1+, .NET 5–8
Option de licence perpétuelleNon (abonnement)Oui

Référence de mappage d'API

Pour les équipes migrant de C1BarCode vers IronBarcode, les équivalents directs suivants s'appliquent :

Code-barres ComponentOne C1Code-barres IronBarcode
C1.C1License.Key = "..."IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
new C1BarCode()Statique — aucune instance nécessaire
barcode.CodeType = CodeType.Code128BarcodeEncoding.Code128 (passé en tant que paramètre)
barcode.Text = "data"Premier argument de BarcodeWriter.CreateBarcode()
barcode.BarHeight = 100.ResizeTo(width, 100) sur le rédacteur de code-barres
barcode.ModuleSize = 2.ResizeTo() contrôle la taille en pixels
barcode.ForeColor = Color.DarkBlue.ChangeBarCodeColor(Color.DarkBlue)
barcode.BackColor = Color.White.ChangeBackgroundColor(Color.White)
barcode.GetImage().SaveAsPng() / .ToPngBinaryData()
barcode.QRCodeErrorCorrectionLevelénumération QRCodeWriter.QrErrorCorrectionLevel
barcode.QRCodeVersionAutomatique (ou paramètre de version)
API de lecture indisponibleBarcodeReader.Read(path)
net8.0-windows requisnet8.0 (ou tout TFM)
UseWindowsForms = true requisNon requis

Quand les équipes changent

Le besoin de lecture se fait sentir. C'est le déclencheur le plus fréquent. Une équipe conçoit un système de génération d'étiquettes à code-barres avec C1BarCode, puis reçoit la demande de vérifier les scans, de traiter les documents d'expédition entrants ou de décoder les codes QR à partir d'images téléchargées. C1BarCode ne peut pas vous aider. Vous avez deux options : ajouter une seconde bibliothèque de codes-barres pour la lecture, ou remplacer C1BarCode par une bibliothèque qui gère les deux.

Déploiement sous Linux ou Docker. Une application de bureau WinForms distribuée sur les postes de travail Windows n'est pas soumise à cette contrainte. Une API ASP.NET Core générant des images de codes-barres, notamment si elle doit s'exécuter dans un conteneur Linux ou être déployée sur Azure App Service sous Linux. Le framework cible net8.0-windows bloque immédiatement ces options de déploiement.

Architecture de microservices ou sans serveur. Azure Functions, AWS Lambda et les microservices conteneurisés sont conçus pour Linux en priorité. Un service de génération de codes-barres qui ne peut pas être déployé sur Linux ne constitue pas un microservice viable.

Coût de l'abonnement à la Suite en fonction des besoins. Les équipes qui paient pour ComponentOne Studio Enterprise et utilisent déjà ses grilles, graphiques et autres contrôles ont déjà justifié leur abonnement. Les équipes qui se sont abonnées principalement ou exclusivement pour la génération de codes-barres paient pour plus de 100 contrôles qu'elles n'utilisent pas. Le coût de l'abonnement par développeur augmente avec la taille de l'équipe.

Licence perpétuelle privilégiée. ComponentOne Studio est disponible uniquement par abonnement. Il n'existe pas d'option de licence perpétuelle. Pour les équipes qui préfèrent posséder le logiciel qu'elles expédient — en particulier pour des raisons de conformité ou de maintenance à long terme — la licence perpétuelle d'IronBarcode (dès 749 $ Lite) est structurellement différente.

Conclusion

C1BarCode génère des codes-barres de manière propre dans un contexte WinForms. C'est véritablement ce qu'il fait bien, et pour une application de bureau WinForms qui n'a besoin que de générer des étiquettes sous Windows, c'est un choix fonctionnel au sein de la Suite ComponentOne.

Le champ d'application s'arrête là. Aucune lecture requise, déploiement uniquement sous Windows, aucun package autonome, licence par abonnement. Lorsque les exigences d'un projet dépassent la génération WinForms sous Windows (exigence de lecture, cible de déploiement Linux, API web, conteneur Docker, fonction cloud), C1BarCode ne peut pas les prendre en charge. Code-barres IronBarcode couvre la génération et la lecture, fonctionne sur toutes les plateformes prises en charge par .NET et est disponible en tant que package autonome sans abonnement à une Suite Enterprise de 100 contrôles.

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 et créer des manuels bien structurés et visuellement attrayants.

...
Lire la suite

Articles connexes

Key in blue circle

Obtenez votre clé d'essai de 30 jours instantanément.

Your trial license will be sent to your email address

Aucune restriction. 100 % débloqué. Pas de carte bancaire.

bullet_checkedAucune carte de crédit ou création de compte requiseAucune restriction. 100 % débloqué. Pas de carte bancaire.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Réservez votre Démonstration en direct gratuite
Booking Badge

De confiance par des millions d'ingénieurs dans le monde entier

Logos des clients d'Iron Software
Obtenez Votre Consultation sans Engagement
Remplissez le formulaire ci-dessous ou envoyez un email à sales@ironsoftware.com
Vos informations seront toujours gardées confidentielles.
De confiance par des millions d'ingénieurs dans le monde entier
Logos des clients d'Iron Software
Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise