IRONSOFTWAREHOME
COMPARAR COM OUTROS COMPONENTES

Código de barras DevExpress vs IronBarcode: Controle de UI vs Biblioteca Autônoma

Curtis Chau
Curtis Chau
Updated: 26 de abril de 2026

DevExpress é um kit de ferramentas de interface de usuário .NET muito conceituado. O grid, scheduler, gráfico e controles de tabela dinâmica são amplamente usados por equipes empresariais. O suporte para código de barras, no entanto, é uma história diferente. DevExpress entrega um BarCodeControl — um controle WinForms e uma tag Blazor DxBarCode — que permite renderizar um código de barras em um formulário. O suporte da DevExpress confirmou que não existe capacidade de leitura e não há planos atuais de adicioná-la. Se seus códigos de barras estiverem em uma tarefa em segundo plano, uma API da web, um documento PDF ou qualquer ambiente sem um formulário de interface do usuário, o controle não se aplica.

Essa restrição limita a oferta de código de barras da DevExpress a um nicho específico: renderizar um código de barras visualmente dentro de uma interface de usuário DevExpress WinForms ou Blazor . Para esse nicho específico, funciona bem. Para qualquer outra coisa — geração no servidor, leitura de imagens ou PDFs, processamento sem interface gráfica em Azure Functions ou contêineres Docker — você precisa de uma ferramenta diferente.

Entendendo os controles de código de barras da DevExpress

DevExpress BarCodeControl reside em DevExpress.XtraEditors, com suas classes de geração de simbologia em DevExpress.XtraPrinting.BarCode. Não se trata de uma biblioteca independente. É agrupado na suíte DXperience, que começa em $1.699,99 por ano (assinaturas Universais são $2.299,99). Não existe um pacote NuGet separado, exclusivo para códigos de barras, que você possa instalar.

O BarCodeControl é um controle WinForms. Você o configura com um objeto de simbologia, define as propriedades e ele é renderizado na tela. Salvar essa renderização em um arquivo requer chamar DrawToBitmap, que espera um Bitmap pré-alocado do tamanho certo:

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

Observe os vários pontos de atrito aqui. Primeiro, barCode.Module está em unidades de documento em vez de pixels, o que cria uma discrepância se você está pensando nas dimensões em pixels. Segundo, você deve saber o tamanho final em pixels antes de alocar o Bitmap. Em terceiro lugar, o controle exige que os assemblies do WinForms sejam carregados — o que significa que uma API mínima do ASP.NET Core ou um serviço em segundo plano do console deve carregar a infraestrutura do Windows Forms apenas para gerar uma imagem de código de barras.

A tag Blazor DxBarCode é conceitualmente semelhante, mas é um componente Razor para renderização de UI, não uma API de geração do lado do servidor.

Sem capacidade de leitura

A posição oficial da DevExpress é que eles não fornecem funcionalidade de reconhecimento ou digitalização de código de barras. O Centro de Suporte DevExpress afirma: "O controle DevExpress BarCode é projetado apenas para geração de códigos de barras. Não fornecemos funcionalidade de reconhecimento/escaneamento de códigos de barras." Não há planos atuais de adicioná-la.

Para equipes que começam com um aplicativo DevExpress WinForms e posteriormente recebem a necessidade de escanear um código de barras de uma imagem carregada ou ler um código QR de um anexo PDF, o conjunto de ferramentas DevExpress não será suficiente. Será necessário utilizar uma biblioteca separada para lidar com a leitura, o que imediatamente levanta a questão de se a parte de geração também deve migrar para essa biblioteca para manter a consistência da API.

O IronBarcode lida com ambas as direções:

//IronBarcode reading — 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}");
}
C#

A leitura de um arquivo PDF não requer nenhuma biblioteca adicional:

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

A questão do pacote de Suite

Os componentes de código de barras da DevExpress não são vendidos como um produto independente. Para usar BarCodeControl em qualquer projeto, sua equipe precisa de uma assinatura DevExpress — o nível ASP.NET & Blazor começa em $1.099,99/ano, DXperience (WinForms + WPF) é $1.699,99/ano, e Universal é $2.299,99/ano. O Suite inclui o grid, o gráfico, o agendador, a tabela dinâmica e muitos outros controles — o que é razoável se você estiver criando um aplicativo completo DevExpress WinForms ou Blazor . Se você precisa apenas da geração de código de barras para um serviço de backend, estará pagando por um conjunto completo de ferramentas de interface do usuário que o serviço nunca utilizará.

IronBarcode é um pacote independente:

dotnet add package IronBarcode
SHELL

A licença Lite perpétua tem um preço inicial de US$ 749 para um desenvolvedor. Não há nenhum conjunto de ferramentas de interface do usuário incluído. Você obtém geração e leitura de códigos de barras, suporte multiplataforma e nada mais que você não tenha solicitado.

Limitação de uso em modo headless

O problema fundamental com BarCodeControl em cenários do lado do servidor é que ele é um controle WinForms. Em um projeto de API mínima ASP.NET Core .NET 6+, os assemblies do WinForms não são referenciados por padrão. Para instanciar BarCodeControl, seu projeto API deve ou direcionar explicitamente para Windows e carregar o runtime Windows Forms, ou adicionar referências de contorno que tragam uma infraestrutura de UI que sua API nunca renderizará.

Em um plano de consumo do Azure Functions, você não tem nenhuma camada de interface do usuário. Em um contêiner Docker executando uma imagem base do Linux, as dependências do GDI+ do Windows Forms podem estar completamente ausentes. DevExpress não oferece suporte oficial ao uso de BarCodeControl nesses ambientes sem cabeça.

IronBarcode utiliza uma API estática e totalmente programática:

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

Essa chamada exata funciona em um aplicativo de console, um controlador ASP.NET Core , uma Função do Azure acionada por uma mensagem do Service Bus ou um contêiner Docker em execução no Linux. A API não muda entre ambientes. Não há dependência de montagem da interface do usuário.

Um endpoint ASP.NET Core que retorna um código de barras como um arquivo PNG de resposta tem a seguinte aparência:

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

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

Não há padrão equivalente com BarCodeControl sem contornizações significativas.

Entendendo o IronBarcode

IronBarcode é uma biblioteca .NET independente para gerar e ler códigos de barras. A API é totalmente estática — sem instâncias para gerenciar, sem controle de ciclo de vida, sem dependência de interface do usuário. A geração e a leitura funcionam na mesma chamada:

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

A ativação da licença é feita em uma única linha no processo de inicialização:

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

Sem chamada de rede. Sem código padrão para tratamento de erros. Validação local.

Código QR lado a lado

Os códigos QR ilustram a lacuna de API entre um controle de interface do usuário e uma biblioteca programática.

Código QR DevExpress — controle 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();

Código QR IronBarcode— mesmo resultado, sem necessidade de montagem de interface de usuário:

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

Adicionar o logotipo da marca ao centro do código QR:

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

A DevExpress não possui equivalente para logotipos incorporados. O controle exibe um código QR padrão e nada mais.

Comparação de recursos

RecursoCódigo de barras DevExpressIronBarcode
Geração de código de barrasSim (controle WinForms, tag Blazor )Sim (API programática, todos os ambientes)
Leitura/escaneamento de código de barrasNão — confirmado oficialmenteSim — imagens, PDFs, matrizes de bytes
Leitura de código de barras em PDFNãoSim — nativo, sem biblioteca extra
Pacote NuGet independenteNão — é necessário o Suite DXperience.Sim — apenas IronBarcode
Custo da SuiteA partir de $1.099,99/ano (ASP.NET & Blazor) até $2.299,99/ano (Universal)N/A — independente
Custo da licençaSomente por assinaturaPerpétuo a partir de $999
ASP.NET Core / API mínimaRequer soluções alternativas para WinForms.Suporte nativo
Azure FunctionsNão é compatível com modo headless.Suporte total
Docker / LinuxProblemas com GDI+ em imagens base do LinuxSuporte total
Aplicativos de consoleRequer o carregamento do assembly WinForms.Suporte nativo
Geração de código QRSim (via simbologia QRCodeGenerator)Sim (QRCodeWriter)
QR Code com logotipo incorporadoNãoSim — .AdicionarLogotipoDaMarca()
Níveis de correção de erros de QR CodeH, Q, M, LMáximo, Alto, Médio, Baixo
Código 128SimSim
Matriz de dadosSimSim
PDF417SimSim
astecaSimSim
Saída de arquivoDrawToBitmap — alocação manual de Bitmap.SalvarComoPng(), .SalvarComoGif(), .SalvarComoSvg()
Saída binária (resposta HTTP)Bitmap manual → Fluxo de memória.ToPngBinaryData()
Leitura multithreadN/A — sem leituraMaxParallelThreads = 4
Leitura de múltiplos códigos de barrasN/A — sem leituraExpectMultipleBarcodes = true
PlataformasWindows (WinForms / Blazor)Windows, Linux, macOS, Docker, Azure, AWS Lambda
Suporte à versão .NET.NET Framework + .NET moderno (Windows).NET Framework 4.6.2 até o .NET atual

Referência de Mapeamento de API

As equipes familiarizadas com o padrão DevExpress BarCodeControl acharão essas equivalências úteis:

Código de barras DevExpressIronBarcode
new BarCodeControl()Estático — nenhuma instância necessária
new Code128Generator() + barCode.Symbology = symbologyBarcodeEncoding.Code128 passado como parâmetro
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 (unidades de documento).ResizeTo(width, height) (pixels)
barCode.ShowText = true.AddBarcodeText()
DrawToBitmap(bitmap, rect) — alocação manual de Bitmap.SaveAsPng(path) — lida com o dimensionamento automaticamente
Manual BitmapMemoryStream para resposta HTTP.ToPngBinaryData()
Sem API de leituraBarcodeReader.Read(imagePath)
Tipo de resultado de leitura negativa.Value (string), .Format (BarcodeEncoding)
A montagem da interface do usuário é necessária em todos os projetos.Funciona em qualquer tipo de projeto .NET.
Apenas suíte (a partir de $1.099,99/ano)Autônomo (a partir de US$ 749, licença perpétua)

Quando as equipes trocam

Diversos cenários específicos costumam motivar a migração dos controles de código de barras DevExpress para o IronBarcode.

Chega um requisito de leitura. O cenário mais comum é o de um aplicativo WinForms que gera códigos de barras há anos e, de repente, surge uma nova solicitação de recurso: o aplicativo agora precisa escanear ou verificar códigos de barras a partir de imagens carregadas ou capturas de câmera. DevExpress não possui API de leitura. A equipe precisa de uma nova biblioteca de qualquer forma, e faz sentido consolidar a geração nessa mesma biblioteca.

Necessidade de um endpoint de API web. Uma equipe está desenvolvendo um microsserviço que gera etiquetas de código de barras sob demanda — acionadas por um frontend web, um aplicativo móvel ou outro serviço. O projeto ASP.NET Core não possui dependência do WinForms e a equipe não deseja adicionar uma. A API estática do IronBarcode se integra a um endpoint HTTP sem a necessidade de qualquer configuração adicional de interface de usuário.

Implantação do Azure Functions ou Lambda. Implantações sem servidor geralmente usam imagens base do Linux e tempos de execução mínimos. BarCodeControl não é projetado para este ambiente. O IronBarcode funciona no Linux, em contêineres Docker, no Azure Functions e no AWS Lambda sem necessidade de alterações de configuração.

Custo de renovação da suíte para uma única funcionalidade. Quando a renovação acontece e uma equipe audita o que realmente usa da suíte DXperience, descobrir que o único componente DevExpress em um serviço específico é BarCodeControl cria uma conversa sobre custo. Pagar uma assinatura completa do DXperience ($1.699,99/ano novo, $849,99/ano na renovação) para geração de códigos de barras quando uma biblioteca autônoma custa $999 perpétuo é um argumento difícil de fazer.

Leitura de múltiplos códigos de barras em PDFs. Os fluxos de trabalho de processamento de documentos — como a leitura de códigos de barras em PDFs de faturas, manifestos de remessa ou formulários digitalizados — exigem suporte a PDF e capacidade de leitura. O IronBarcode lê diretamente arquivos PDF sem necessidade de bibliotecas adicionais. A DevExpress não oferece nenhuma dessas funcionalidades.

Conclusão

A solução de código de barras da DevExpress é melhor compreendida como um recurso de renderização de interface do usuário integrado a um kit de ferramentas de interface do usuário. Se o seu aplicativo é um aplicativo WinForms ou Blazor que já utiliza DevExpress para seus controles de grade e gráfico, e sua única necessidade de código de barras é exibi-lo visualmente em um formulário, o BarCodeControl é uma escolha razoável — você já possui a licença.

No momento em que você precisa de qualquer um dos seguintes, BarCodeControl deixa de ser a ferramenta certa: ler códigos de barras, gerar códigos de barras em um contexto do lado do servidor, executar em um ambiente sem cabeça, trabalhar no Linux ou operar sem uma referência de assembly WinForms. O suporte da DevExpress confirmou que não há funcionalidade de leitura e que não há planos para adicioná-la. A limitação do modo headless é arquitetônica, não um problema de configuração. Um controle de interface do usuário é um controle de interface do usuário.

O IronBarcode foi desenvolvido para trabalho programático com códigos de barras — geração e leitura por meio de uma API estática, em qualquer ambiente e em qualquer plataforma. As duas ferramentas resolvem problemas diferentes. O código de barras DevExpress serve para ser renderizado dentro de um formulário.IronBarcode serve para processar códigos de barras em código.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.

...
Leia mais

Artigos relacionados

Key in blue circle

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.

Your trial license will be sent to your email address

Sem limitações. 100% desbloqueado. Sem cartão de crédito.

bullet_checkedNão é necessário cartão de crédito nem criação de conta.Sem limitações. 100% desbloqueado. Sem cartão de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Agende sua demonstração ao vivo gratuita.
Booking Badge

Aprovado por milhões de engenheiros em todo o mundo.

Logotipos dos clientes da Iron Software
Agende sua consulta sem compromisso.
Preencha o formulário abaixo ou envie um e-mail para sales@ironsoftware.com
Os seus dados serão sempre mantidos em sigilo.
Aprovado por milhões de engenheiros em todo o mundo.
Logotipos dos clientes da Iron Software
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.