IRONSOFTWAREHOME
與其他組件的比較

DevExpress 條碼 vs IronBarcode:UI 控件 vs 獨立程式庫

Curtis Chau
Curtis Chau
Updated: 2026年4月26日

DevExpress 是一個頗受好評的 .NET UI 工具包。 網格、排程器、圖表和樞紐分析表控件被企業團隊廣泛使用。 然而,條碼支援則是另一個故事。 DevExpress 提供一個 BarCodeControl ——一個 WinForms 控件和一個 Blazor DxBarCode 標籤——讓您可以將條碼渲染到表單上。 DevExpress 支援已確認沒有閱讀功能,並且目前沒有計劃增加這一功能。 如果您的條碼存在於背景作業、一個 Web API、一本 PDF 文件或任何沒有 UI 表單的環境中,則該控件不適用。

這個限制將 DevExpress 條碼產品的應用範圍縮小到一個特定的利基市場:在 DevExpress WinForms 或 Blazor UI 內部直觀看到條碼。 對於這個利基市場,它運作良好。對於其他任何——伺服器端生成,從圖像或 PDF 中讀取,無頭處理如 Azure Functions 或 Docker 環境——您需要不同的工具。

理解 DevExpress 條碼控件

DevExpress BarCodeControl 位於 DevExpress.XtraEditors 中,其符號生成類位於 DevExpress.XtraPrinting.BarCode 中。 這不是一個獨立的程式庫。 它包含在 DXperience 套件中,起價 $1,699.99 每年(Universal 訂閱為 $2,299.99)。 您無法安裝單獨的僅限條碼的 NuGet 包。

BarCodeControl 是一個 WinForms 控件。 您使用符號物件配置它,設置屬性,然後它會顯示在螢幕上。 將渲染保存到文件需要呼叫 DrawToBitmap,它需要一個預先配置好的大小合適的 Bitmap

// DevExpress WinForms: UI control, not a library
using DevExpress.XtraEditors;              // BarCodeControl
using DevExpress.XtraPrinting.BarCode;     // Code128Generator, etc.
using System.Drawing;
using System.Drawing.Imaging;

var barCode = new BarCodeControl();
var symbology = new Code128Generator();
symbology.CharacterSet = Code128CharacterSet.CharsetAuto;
barCode.Symbology = symbology;
barCode.Text = "ITEM-12345";
barCode.Module = 0.02f;  // document units, not pixels
barCode.ShowText = true;

// File output requires DrawToBitmap — you must size the Bitmap manually
barCode.Width = 400;
barCode.Height = 100;
var bitmap = new Bitmap(barCode.Width, barCode.Height);
barCode.DrawToBitmap(bitmap, new Rectangle(0, 0, barCode.Width, barCode.Height));
bitmap.Save("barcode.png", ImageFormat.Png);
bitmap.Dispose();

這裡有幾個摩擦點。 首先,barCode.Module 是文件單位而非像素,這在您思考像素尺寸時會出現不匹配。 其次,您必須知道最終的像素大小,才能分配 Bitmap。 第三,控件需要載入 WinForms 程式集——這意味著一個 ASP.NET Core 最小 API 或控制台背景服務必須載入 Windows Forms 基礎結構才能生成條碼圖像。

Blazor DxBarCode 標籤在概念上類似,但它是一個 UI 渲染的 Razor 組件,而不是伺服器端生成 API。

無閱讀功能

DevExpress 的官方立場是他們不提供條碼識別或掃描功能。 DevExpress Support Center 表示:"DevExpress BarCode 控件僅用於條碼生成。 我們不提供條碼識別/掃描功能。"目前沒有計劃增加這一功能。

對於那些從 DevExpress WinForms 應用開始並在後期收到要求從上傳的圖像掃描條碼或從 PDF 附件中讀取 QR 程式碼的團隊,DevExpress 工具箱無法提供幫助。您需要引入一個獨立的程式庫來處理閱讀,這立即引發了問卷,生成端是否也應移至該程式庫以保持 API 一致性。

IronBarcode 處理這兩個方向:

//IronBarcodereading — works on images, PDFs, and byte arrays
// NuGet: dotnet add package IronBarcode
using IronBarCode;

var results = BarcodeReader.Read("scanned-label.png");
foreach (var result in results)
{
    Console.WriteLine($"Format: {result.Format}");
    Console.WriteLine($"Value: {result.Value}");
}

從 PDF 文件中讀取不需要額外的程式庫:

// Reading barcodes from a PDF — no PdfiumViewer or similar required
var pdfResults = BarcodeReader.Read("shipping-manifest.pdf");
foreach (var result in pdfResults)
{
    Console.WriteLine($"Page barcode: {result.Value}");
}

套件捆綁問題

DevExpress 條碼元件不作為獨立產品銷售。 要在任何項目中使用 BarCodeControl,您的團隊需要一個 DevExpress 訂閱——ASP.NET & Blazor 級別起價 $1,099.99/年,DXperience(WinForms + WPF)是 $1,699.99/年,而 Universal 是 $2,299.99/年。 這個套件包括網格、圖表、排程器、樞紐分析表和許多其它控件——如果您正在構建完全的 DevExpress WinForms 或 Blazor 應用程式,是合理的。 如果您只需要一個後端服務的條碼生成,您付出了整個 UI 工具包的價格而這個服務卻不會使用。

IronBarcode 是一個獨立的包:

dotnet add package IronBarcode
SHELL

永久的 Lite 授權起價為一位開發者 $999。 沒有捆綁的 UI 工具包。 您將獲得條碼生成和讀取、跨平台支持,以及您未曾要求的其他功能。

無頭使用限制

在伺服器端情景中 BarCodeControl 基本問題是它是一個 WinForms 控件。 在 .NET 6+ ASP.NET Core 最小 API 專案中,預設情況下不引用 WinForms 程式集。 要實例化 BarCodeControl,您的 API 項目必須明確針對 Windows 並載入 Windows Forms 運行時,或新增工作崗位引用來拉入您的 API 永遠不會渲染的 UI 基礎結構。

在 Azure Function 消費計劃中,您完全沒有 UI 層。 在運行 Linux 基礎鏡像的 Docker 容器中,可能完全不存在 Windows Forms GDI+ 依賴。 DevExpress 官方不支持在這些無頭環境中的 BarCodeControl 使用。

IronBarcode 使用的是全程式化、靜態 API:

// IronBarcode: works in WinForms, ASP.NET Core, Azure Function, console — same code
// NuGet: dotnet add package IronBarcode
using IronBarCode;

BarcodeWriter.CreateBarcode("ITEM-12345", BarcodeEncoding.Code128)
    .SaveAsPng("barcode.png");

這個確切的調用可以在控制台應用程式、ASP.NET Core 控件器、由 Service Bus 消息觸發的 Azure 功能或者在 Linux 上運行的 Docker 容器中運行。 API 不會因環境的變化而改變。 沒有 UI 程式集的依賴。

一個返回條碼為 PNG 文件響應的 ASP.NET Core 端點看起來像這樣:

app.MapGet("/barcode/{sku}", (string sku) =>
{
    var bytes = BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128)
        .ResizeTo(400, 100)
        .ToPngBinaryData();

    return Results.File(bytes, "image/png");
});

沒有顯著工作量的 BarCodeControl 等效模式。

理解IronBarcode

IronBarcode 是一個生成和讀取條碼的獨立 .NET 程式庫。 API 完全靜態——無需管理實例,無控件生命週期,無 UI 依賴性。 生成和讀取都在同一個呼叫中工作:

// NuGet: dotnet add package IronBarcode
using IronBarCode;

// Generate Code 128
BarcodeWriter.CreateBarcode("ORDER-9921", BarcodeEncoding.Code128)
    .ResizeTo(450, 120)
    .SaveAsPng("order-label.png");

// Generate and get bytes (for HTTP responses, blob storage, etc.)
byte[] pngBytes = BarcodeWriter.CreateBarcode("ORDER-9921", BarcodeEncoding.Code128)
    .ResizeTo(450, 120)
    .ToPngBinaryData();

// Read from an image file
var results = BarcodeReader.Read("order-label.png");
Console.WriteLine(results.First().Value); // ORDER-9921

授權激活在啟動時只需一行:

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

無需網路呼叫。 無需錯誤處理樣板。 本地驗證。

QR Code 對比

QR 碼展示了 UI 控件和程式化程式庫之間的 API 差距。

**DevExpress QR 程式碼—WinForms 控件: **

// DevExpress: QR via BarCodeControl + QRCodeGenerator symbology
using DevExpress.XtraEditors;              // BarCodeControl
using DevExpress.XtraPrinting.BarCode;     // QRCodeGenerator + QRCodeErrorCorrectionLevel

var barCode = new BarCodeControl();
var symbology = new QRCodeGenerator();
symbology.ErrorCorrectionLevel = QRCodeErrorCorrectionLevel.H;
symbology.CompactionMode = QRCodeCompactionMode.AlphaNumeric;
barCode.Symbology = symbology;
barCode.Text = "https://example.com";
barCode.Width = 500;
barCode.Height = 500;

var bitmap = new Bitmap(barCode.Width, barCode.Height);
barCode.DrawToBitmap(bitmap, new Rectangle(0, 0, barCode.Width, barCode.Height));
bitmap.Save("qr.png", ImageFormat.Png);
bitmap.Dispose();

IronBarcode QR 程式碼—同樣結果,無需 UI 程式集:

// IronBarcode: QR in one method chain
QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .SaveAsPng("qr.png");

在 QR 碼中間放置品牌標誌:

QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .AddBrandLogo("company-logo.png")
    .SaveAsPng("qr-branded.png");

DevExpress 沒有內嵌標誌的相等功能。 控件僅繪製標準QR碼,沒有更多。

特性比較

特性DevExpress 條碼IronBarcode
條碼生成是的 (WinForms 控件, Blazor 標籤)是的 (程式化 API,適用於所有環境)
條碼讀取/掃描否——官方確認是的——圖像,PDF,位元組陣列
** PDF 條碼讀取 **是——本地,無需額外程式庫
獨立 NuGet 包否——需要 DXperience 套件是的——僅有 IronBarcode
套件成本每年 $1,099.99 起(ASP.NET & Blazor)至 $2,299.99(Universal)不適用——獨立的
授權成本僅限訂閱永久從 $999 開始
ASP.NET Core / minimal API需要 WinForms 的變通辦法原生支持
Azure功能不支持無頭的完全支援
Docker / LinuxLinux 基礎鏡像的 GDI+ 問題完全支援
控制台應用程式需要載入 WinForms 程式集原生支持
QR 程式碼生成是的(通過 QRCodeGenerator 符號)是的(QRCodeWriter)
QR 中嵌入標誌是的——.AddBrandLogo()
QR 錯誤校正等級H, Q, M, L最大、高、中、低
Code 128
Data Matrix
PDF417
Aztec
文件輸出DrawToBitmap——手動 BMP 分配.SaveAsPng(), .SaveAsGif(), .SaveAsSvg()
二進制輸出(HTTP 響應)手動 BMP → MemoryStream.ToPngBinaryData()
多執行緒讀取不適用——無讀取MaxParallelThreads = 4
多條碼讀取不適用——無讀取ExpectMultipleBarcodes = true
平台Windows(WinForms / Blazor)Windows、Linux、macOS、Docker、Azure、AWS Lambda
** .NET 版本支持 **.NET Framework + 現代 .NET(Windows).NET Framework 4.6.2 通過當前 .NET

API對映參考

熟悉 DevExpress BarCodeControl 模式的團隊會發現這些等價性很有用:

DevExpress 條碼IronBarcode
new BarCodeControl()靜態——無需實例
new Code128Generator() + barCode.Symbology = symbology作為參數傳遞的 BarcodeEncoding.Code128
new QRCodeGenerator() + QRCodeErrorCorrectionLevel.HQRCodeWriter.CreateQrCode("data", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
new DataMatrixGenerator() + DataMatrixSize.Matrix26x26BarcodeWriter.CreateBarcode("data", BarcodeEncoding.DataMatrix)
new PDF417Generator()BarcodeWriter.CreateBarcode("data", BarcodeEncoding.PDF417)
new AztecGenerator()BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Aztec)
barCode.Module = 0.02f(文件單位).ResizeTo(width, height)(像素)
barCode.ShowText = true.AddBarcodeText()
DrawToBitmap(bitmap, rect)——手動 BMP 分配.SaveAsPng(path)——自動處理尺寸
手動 BitmapMemoryStream 用於 HTTP 響應.ToPngBinaryData()
無讀取APIBarcodeReader.Read(imagePath)
沒有讀取結果型別.Value (string), .Format (BarcodeEncoding)
每個項目都需 UI 程式集適用於任何 .NET 項目型別
只限套件(每年 $1,099.99 起)獨立(永久 $999 起)

當團隊轉換

幾個特定場景通常會觸發從 DevExpress 條碼控件移動到 IronBarcode。

讀取需求來臨。 最常見的情況是,一個生成條碼多年的 WinForms 應用程式收到新需求:現在該應用程式必須從上傳的圖像或相機捕獲中掃描或驗證條碼。 DevExpress 沒有讀取 API。 無論如何團隊都需要一個新的程式庫,同時整合生成到該程式庫上是有意義的。

需要 Web API 端點。 一個團隊構建了微服務,可以按需生成條碼標籤——從 Web 前端、移動應用程式或其他服務調用。ASP.NET Core 項目沒有 WinForms 依賴,團隊不希望增加一個。IronBarcode的靜態 API 整合到 HTTP 端點而沒有任何 UI 程式集負擔。

Azure Function 或 Lambda 部署。 無伺服器部署經常使用 Linux 基礎映像和最小運行時。 BarCodeControl 不適合此環境。IronBarcode在 Linux、Docker 容器、Azure Functions 和 AWS Lambda 運行,無需配置更改。

僅限單一功能的套件續約成本。 當續約來臨,團隊審計他們實際使用的 DXperience 套件內容,發現特定服務中的唯一 DevExpress 組件是 BarCodeControl,也激發了成本問題。 支付整個 DXperience 訂閱($1,699.99/年新,續訂 $849.99/年)用於條碼生成,而獨立程式庫只需 $999 永久,是很難講得通的。

從 PDF 中多條碼讀取。 文件處理工作流——從發票 PDF、運單或掃描表單讀取條碼——需要 PDF 支持和讀取功能。IronBarcode直接從 PDF 文件讀取,無需額外程式庫。 DevExpress 不提供任一功能。

結論

DevExpress 的條碼產品最好理解為一個內建於 UI 工具包中的 UI 渲染功能。 如果您的應用程式是已經使用 DevExpress 進行其網格和圖表控件的 WinForms 或 Blazor 應用程式,並且您唯一的條碼需求是直觀地在表單上顯示條碼,則 BarCodeControl 是一個合理選擇——因為您已經擁有該授權。

一旦您需要以下任何一項,BarCodeControl 就不再是合適的工具:讀取條碼、在伺服器端上下文中生成條碼、在無頭環境中運行、在 Linux 上工作或在不使用 WinForms 程式集參考的情況下操作。 DevExpress 支援已確認沒有讀取功能,並且沒有計劃增加它。 無頭限制是架構問題,不是配置問題。 UI 控件是一個 UI 控件。

IronBarcode 則是為程式化的條碼工作而建造的——透過靜態 API,在任何環境中的生成和讀取,適用於任何平台。 這兩個工具解決了不同的問題。 DevExpress 條碼是為在表單內渲染而設計。IronBarcode是用於程式化處理條碼。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

...
閱讀更多

相關文章

Key in blue circle

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
預訂您的免費即時演示
Booking Badge

全球數百萬工程師信賴

Iron Software的客戶標誌
獲取您的無義務諮詢
完成下方表單或發送電子郵件至sales@ironsoftware.com
您的詳細資訊將始終保密。
全球數百萬工程師信賴
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立