AnyBitmap to System.Drawing.Bitmap in .NET Framework

Curtis Chau
Curtis Chau
Updated: 29 de junho de 2026

Em um aplicativo de desktop .NET Framework, como WinForms, atribuir um AnyBitmap do IronBarcode diretamente a um System.Drawing.Image ou Bitmap falha em tempo de compilação. Um caso comum é vincular um código de barras gerado a um PictureBox, que só aceita objetos System.Drawing.Image.

Cannot implicitly convert type 'IronSoftware.Drawing.AnyBitmap' to 'System.Drawing.Image'
Text

O código abaixo aciona o erro:

var myBarcode = BarcodeWriter.CreateBarcode("12345", BarcodeWriterEncoding.EAN8);
// These lines cause compile-time errors
Image myBarcodeImage = myBarcode.Image;
Bitmap myBarcodeBitmap = myBarcode.ToBitmap();

Ambos BarcodeWriter.Image e .ToBitmap() retornam um IronSoftware.Drawing.AnyBitmap. Esse tipo suporta conversão implícita para System.Drawing.Bitmap ou Image, mas somente no .NET 6, .NET 7, .NET 8 ou superior. Em .NET Framework, os operadores implícitos e a ponte de tipos internos nem sempre são resolvidos, especialmente quando os tipos vêm de bibliotecas diferentes ou camadas de compatibilidade.

Solução

Option 1: Install System.Drawing.Common

Adicione o pacote NuGet System.Drawing.Common para que os operadores de conversão sejam resolvidos contra um assembly de desenho consistente.

.NET CLI:

dotnet add package System.Drawing.Common
SHELL

Console do Gerenciador de Pacotes:

Install-Package System.Drawing.Common
SHELL

.csproj no estilo SDK:

<PackageReference Include="System.Drawing.Common" Version="8.0.0" />
XML

Opção 2: Converter Através de um Fluxo

Quando você preferir não alterar referências de pacotes, converta o bitmap através de um fluxo compatível com GDI e entregue o resultado para PictureBox:

var myBarcode = BarcodeWriter.CreateBarcode("12345", BarcodeWriterEncoding.EAN8);
myBarcode.ResizeTo(400, 100); // Optional resizing
using (var ms = myBarcode.ToWindowsBitmapStream())
{
    pictureBox1.Image = Image.FromStream(ms); // Works in .NET Framework
}

ToWindowsBitmapStream() escreve o AnyBitmap em um formato de imagem compatível com GDI, e Image.FromStream analisa esse fluxo em um System.Drawing.Image nativo.

Observe: Você também pode serializar o AnyBitmap com ToStream() se precisar de um fluxo genérico em vez de um específico do Windows.

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

Pronto para começar?

Nuget Downloads 2,540,041Versão:2026.11recém-lançado