AnyBitmap to System.Drawing.Bitmap in .NET Framework
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'
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();
var myBarcode = BarcodeWriter.CreateBarcode("12345", BarcodeWriterEncoding.EAN8);
// These lines cause compile-time errors
Image myBarcodeImage = myBarcode.Image;
Bitmap myBarcodeBitmap = myBarcode.ToBitmap();
Dim myBarcode = BarcodeWriter.CreateBarcode("12345", BarcodeWriterEncoding.EAN8)
' These lines cause compile-time errors
Dim myBarcodeImage As Image = myBarcode.Image
Dim myBarcodeBitmap As Bitmap = 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
dotnet add package System.Drawing.Common
Console do Gerenciador de Pacotes:
Install-Package System.Drawing.Common
Install-Package System.Drawing.Common
.csproj no estilo SDK:
<PackageReference Include="System.Drawing.Common" Version="8.0.0" />
<PackageReference Include="System.Drawing.Common" Version="8.0.0" />
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
}
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
}
Dim myBarcode = BarcodeWriter.CreateBarcode("12345", BarcodeWriterEncoding.EAN8)
myBarcode.ResizeTo(400, 100) ' Optional resizing
Using ms = myBarcode.ToWindowsBitmapStream()
pictureBox1.Image = Image.FromStream(ms) ' Works in .NET Framework
End Using
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.

