IRONSOFTWAREHOME
PORÓWNAJ Z INNYMI KOMPONENTAMI

MESCIUSComponentOne C1BarCodevs IronBarcode

Curtis Chau
Curtis Chau
Updated: 26 kwietnia 2026

Kontrola kodów kreskowych MESCIUS ComponentOne (dawniej GrapeCity, przemianowana w 2023) generuje kody kreskowe w aplikacjach Windows Forms, WPF, WinUI, Blazor i ASP.NET Core MVC. Radzi sobie z tym dobrze — API jest przejrzyste, jakość wyników jest solidna, a integracja z projektantem WinForms przebiega naturalnie. Jednak zakres jego działania jest wąski. Nie potrafi odczytywać barcode'ów. Edycje WinForms i WPF działają na docelowym frameworku tylko dla Windows. I nie jest to samodzielny produkt — jest dostarczany jako część ComponentOne Studio Enterprise, subskrypcji 1 299 USD/deweloper/rok, która obejmuje ponad 100 kontrolek UI. Jeśli rozważasz opcje BARCODE dla projektu .NET i znalazłeś ComponentOne na liście porównawczej, ten artykuł wyjaśnia, co ten zakres oznacza w praktyce.

Zrozumienie C1BarCode

C1BarCode to wizualna kontrola. Przepływ pracy generowania tworzy instancję, ustawia właściwości i wywołuje GetImage(), aby pobrać 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);

Interfejs API ustawiający właściwości jest znany programistom WinForms — odpowiada on bezpośrednio powierzchni projektanta. CodeType, BarHeight, ModuleSize, ShowText oraz CaptionPosition to wszystkie właściwości widoczne dla projektanta, które działają identycznie w kodzie.

C1BarCode obsługuje 38 symbologii obejmujących mainstreamowe formaty 1D i 2D: Code 39, Code 128, EAN-8, EAN-13, UPC-A, UPC-E, ITF, QR Code, PDF417 i DataMatrix między innymi. Do generacji kodów kreskowych obejmuje typowe przypadki użycia.

Brak API do odczytu

Nie jest to luka, którą wypełnia opcja konfiguracyjna. Nie istnieje klasa C1BarCodeReader. Nie ma metody Decode() na C1BarCode. Kontrolka BarCode ComponentOne jest z założenia przeznaczona wyłącznie do generowania.

Jeśli Twoja aplikacja musi skanować kody kreskowe z przesłanych obrazów, weryfikować wydrukowane etykiety, przetwarzać dokumenty z osadzonymi kodami lub wyodrębniać dane z kodów QR w interfejsie API — nic z tego nie jest możliwe przy użyciu C1BarCode. Potrzebna byłaby osobna biblioteka do odczytu, co rodzi pytanie, dlaczego miałbyś płacić za komponent służący wyłącznie do generowania kodów kreskowych w ramach Suite dla przedsiębiorstw zawierającej ponad 100 elementów sterujących, skoro samodzielne biblioteki kodów kreskowych obsługują obie operacje.

Brak API odczytu nie jest niczym niezwykłym w przypadku kontrolek BarCode WinForms przeznaczonych do wydruku. Decydującym czynnikiem jest rozszerzenie wymagań — a wymagania dotyczące BarCode prawie zawsze się rozszerzają.

Ograniczenie dotyczące wyłącznie systemu Windows

Edycje C1BarCode WinForms i WPF wymagają konfiguracji docelowego frameworku specyficznej dla Windows:

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

net8.0-windows oraz UseWindowsForms nie są opcjonalnymi preferencjami. C1.Win.BarCode zależy od rodzajów System.Windows.FormsUserControl, PaintEventArgs, Graphics — które istnieją tylko na Windows. Usunięcie net8.0-windows powoduje błąd budowania. ComponentOne dostarcza edycje Blazor i ASP.NET Core MVC kontroli kodów kreskowych, które celują w TFM-y cross-platformowe, ale pakiety WinForms i WPF są związane z Windows.

W przeciwieństwie do tego,IronBarcode celuje w net8.0 (lub w jakikolwiek obsługiwany TFM) bez ograniczeń platformowych:

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

Ma to znaczenie w kilku praktycznych scenariuszach:

  • Azure App Service na systemie Linux: domyślny plan dla nowych wdrożeń usługi App Service. net8.0-windows nie może na niego celować.
  • Kontenery Docker: standardem są kontenery Linux. Kontejner Windows jest większy, kosztuje więcej i nie jest dostępny w wielu warstwach chmury.
  • ASP.NET Core Web API: Punkt końcowy do generowania kodów kreskowych, który można wdrożyć wyłącznie w systemie Windows, stanowi ograniczenie wdrożeniowe, które zespół będzie musiał ostatecznie usunąć.
  • Azure Functions: Plan konsumpcyjny działa w systemie Linux. Funkcja generująca kody kreskowe z celem net8.0-windows nie może być wdrożona w planie konsumpcyjnym.
  • Rozwój w macOS: Deweloperzy na macOS nie mogą uruchomić projektu net8.0-windows lokalnie, nawet do testowania logiki generowania.

Ograniczenia platformy nie stanowią problemu, jeśli aplikacja jest narzędziem desktopowym typu WinForms, które będzie działać wyłącznie w systemie Windows. Problem pojawia się w momencie, gdy wymagania dotyczące wdrożenia obejmują środowisko Linux lub chmurę.

Suite oprogramowania

Kontrola C1BarCode jest sprzedawana jako część ComponentOne Studio Enterprise, które obejmuje pełną suite kontrolera ComponentOne dla WinForms, WPF, Blazor i ASP.NET. Cena za ComponentOne Studio Enterprise to 1 299 USD na dewelopera na rok (subskrypcja); Pojedyncze edycje platformowe (WinForms lub WPF) kosztują 799 USD na dewelopera na rok.

Suite ta zawiera ponad 100 komponentów: siatki, wykresy, harmonogramy, kontrolki wprowadzania danych, projektanty raportów, kontrolki map, wskaźniki i wiele innych. Jeśli budujesz aplikację z dużą ilością danych i potrzebujesz wielu z tych kontrolek, ceniony zestaw może mieć sens. Jeśli potrzebujesz generacji kodów kreskowych i dotarłeś do ComponentOne, ponieważ pojawił się w wyszukiwaniu, kupujesz enterprise UI suite głównie dla jednej kontroli.

Pakiet NuGet jest C1.Win.BarCode dla WinForms (z C1.WPF.BarCode, C1.WinUI.BarCode, i C1.Blazor.BarCode dla innych platform) i jest licencjonowany poprzez subskrypcję ComponentOne Studio. Dla deweloperów, którzy chcą funkcjonalności kodów kreskowych bez pełnego zestawu, brakuje oddzielnej licencji tylko na kody kreskowe.

Struktura cenowa IronBarcode jest inna: to samodzielna biblioteka kodów kreskowych z licencjonowaniem wieczystym zaczynającym się od 749 USD dla pojedynczego dewelopera (Lite), 1 499 USD dla trzech (Plus), 2 999 USD dla dziesięciu (Professional), i 5 999 USD dla nieograniczonej liczby deweloperów. Nie ma kontrolki siatki, biblioteki wykresów ani projektanta raportów — tylko funkcja BARCODE, której szukasz.

Dostosowywanie kodów QR

Obie biblioteki obsługują generowanie kodów QR z opcjami dostosowywania. Styl API znacznie się różni.

Podejście ComponentOne oparte na ustawnikach właściwości:

// 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);

Łańcuch płynny IronBarcode:

//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");

Podejście ComponentOne wymaga zainicjowania obiektu C1BarCode i ustawienia wielu właściwości przed wywołaniem GetImage(). QRCodeWriter w IronBarcode używa płynnego łańcucha — każda operacja zwraca obiekt kodu kreskowego, a na końcu wywołujesz .SaveAsPng(). Nie ma żadnego instancji do zarządzania.

IronBarcode obsługuje również osadzanie logo w kodach QR, czego nie robi 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");

Zrozumienie IronBarcode

Biblioteka IronBarcode to samodzielna biblioteka kodów kreskowych .NET, obsługująca zarówno generowanie, jak i odczyt. Instaluje się z NuGet (dotnet add package IronBarcode), celuje w jakikolwiek obsługiwany .NET TFM bez ograniczeń platformowych i działa na Windows, Linux, macOS, Docker, Azure oraz AWS Lambda.

Strona do czytania obsługuje natywnie dokumenty 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}");
}

Dla scenariuszy o wysokiej przepustowości, BarcodeReaderOptions kontroluje kompromis między szybkością i dokładnością a wykrywaniem wielu kodów kreskowych:

// 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);

Generation obsługuje standardowe formaty za pomocą spójnego statycznego API:

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

// Generowanie kodów QR to byte array (for HTTP response)
byte[] qrBytes = QRCodeWriter.CreateQrCode("https://example.com/order/7734", 400)
    .ToPngBinaryData();

Obsługiwane platformy: Windows, Linux, macOS, Docker, Azure (App Service i Functions), AWS Lambda. Obsługiwane wersje .NET: .NET Framework 4.6.2+, .NET Core 3.1+ i .NET 5/6/7/8.

Porównanie funkcji

FunkcjaMESCIUSComponentOne C1BarCodeIronBarcode
Generowanie BarCode'ówTakTak
Odczytywanie BarCodeNieTak
Generowanie kodów QRTakTak
Osadzanie logo QRNieTak
Plik PDF do odczytuNie dotyczy (brak tekstu do przeczytania)Tak (język ojczysty)
.NET platform target (edycje WinForms/WPF)net8.0-windowsKażdy TFM (net8.0, itd.)
Wymagane UseWindowsForms (edycja WinForms)TakNie
Wdrożenie w systemie Linux / DockerTylko edycje Blazor/ASP.NET MVCTak
Wdrożenie na systemie macOSTylko edycje Blazor/ASP.NET MVCTak
Azure Functions (Linux)Tylko edycje Blazor/ASP.NET MVCTak
ASP.NET Core po stronie serweraedycja ASP.NET Core MVCTak
Samodzielny pakiet NuGetPaczki licencjonowane w ramach suiteTak
Ceny produktów samodzielnychNie dotyczyOd 749 USD – licencja wieczysta (Lite)
Ceny Suite1 299 USD/dev/yr Enterprise; 799 USD/dev/yr edycje jednoplatfromoweNie dotyczy
API generowania płynnegoNie (ustawianie właściwości)Tak
BarcodeReader.Read()NieTak
BarcodeWriter.CreateBarcode()NieTak
QRCodeWriter.CreateQrCode()NieTak
Obsługiwane wersje .NET.NET 6+ (Windows for WinForms/WPF).NET Framework 4.6.2+, .NET Core 3.1+, .NET 5–8
Opcja licencji wieczystejNie (subskrypcja)Tak

Przewodnik po mapowaniu API

W przypadku zespołów przechodzących z C1BarCode na IronBarcode obowiązują następujące bezpośrednie odpowiedniki:

ComponentOne C1BarCodeIronBarcode
C1.C1License.Key = "..."IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
new C1BarCode()Statyczne — nie wymaga instancji
barcode.CodeType = CodeType.Code128BarcodeEncoding.Code128 (przekazany jako parametr)
barcode.Text = "data"Pierwszy argument BarcodeWriter.CreateBarcode()
barcode.BarHeight = 100.ResizeTo(width, 100) na pisarzu kodów kreskowych
barcode.ModuleSize = 2.ResizeTo() kontroluje rozmiar w pikselach
barcode.ForeColor = Color.DarkBlue.ChangeBarCodeColor(Color.DarkBlue)
barcode.BackColor = Color.White.ChangeBackgroundColor(Color.White)
barcode.GetImage().SaveAsPng() / .ToPngBinaryData()
barcode.QRCodeErrorCorrectionLevelQRCodeWriter.QrErrorCorrectionLevel enum
barcode.QRCodeVersionAutomatyczne (lub parametr wersji)
Brak API do odczytuBarcodeReader.Read(path)
net8.0-windows wymaganynet8.0 (lub jakikolwiek TFM)
UseWindowsForms = true wymaganyNie jest wymagane

Kiedy zespoły się zmieniają

Pojawia się potrzeba czytania. Jest to najczęstszy czynnik wyzwalający. Zespół tworzy generowanie etykiet z kodami BarCode za pomocą C1BarCode, a następnie otrzymuje wymaganie weryfikacji skanów, przetwarzania dokumentów przychodzących przesyłek lub dekodowania kodów QR z przesłanych obrazów. C1BarCode nie może w tym pomóc. Do wyboru są: dodanie drugiej biblioteki BARCODE do odczytu lub zastąpienie C1BarCode biblioteką, która obsługuje obie funkcje.

Wdrożenie w systemie Linux lub Docker. Aplikacja desktopowa WinForms przeznaczona na komputery z systemem Windows nie podlega tym ograniczeniom. API .NET Core generująca obrazy kodów kreskowych to robi — zwłaszcza jeśli musi działać w kontenerze Linux lub być wdrożone w usłudze Azure App Service na systemie Linux. net8.0-windows cel framework od razu blokuje te opcje wdrażania.

Architektura mikrousługowa lub bezserwerowa. Azure Functions, AWS Lambda i mikrousługi w kontenerach są zorientowane na system Linux. Usługa generowania kodów kreskowych, której nie można wdrożyć w systemie Linux, nie jest realną mikrousługą.

Koszt subskrypcji Suite a zakres wymagań. Zespoły, które płacą za ComponentOne Studio Enterprise i już korzystają z jego tabel, wykresów i innych elementów sterujących, uzasadniły już tę subskrypcję. Zespoły, które wykupiły subskrypcję głównie lub wyłącznie w celu generowania BARCODE-ów, płacą za ponad 100 elementów sterujących, z których nie korzystają. Koszt subskrypcji na programistę rośnie wraz z wielkością zespołu.

Preferowana jest Licencja wieczysta. ComponentOne Studio jest dostępne wyłącznie w ramach subskrypcji. Nie ma opcji licencji wieczystej. Dla zespołów, które wolą posiadać oprogramowanie, które wysyłają — szczególnie ze względu na zgodność lub długoterminową utrzymanie — wieczyste licencje IronBarcode(zaczynające się od 749 USD Lite) są strukturalnie inne.

Wnioski

C1BarCode generuje BarCodes w sposób przejrzysty w środowisku WinForms. To właśnie robi naprawdę dobrze, a dla aplikacji desktopowej WinForms, która wymaga jedynie generowania etykiet w systemie Windows, jest to funkcjonalny wybór w ramach Suite ComponentOne.

Na tym kończy się zakres zlecenia. Brak możliwości odczytu, wdrożenie wyłącznie w systemie Windows, brak pakietu samodzielnego, licencjonowanie w formie subskrypcji. Gdy wymagania projektu wykraczają poza generowanie WinForms w systemie Windows — wymagania dotyczące odczytu, wdrożenie w systemie Linux, interfejs API sieci Web, kontener Docker, funkcja w chmurze — C1BarCode nie jest w stanie ich spełnić.IronBarcode obsługuje generowanie i odczyt kodów kreskowych, działa na każdej platformie obsługiwanej przez .NET i jest dostępny jako samodzielny pakiet bez konieczności subskrypcji Suite Enterprise zawierającej 100 elementów sterujących.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta