AnyBitmap to System.Drawing.Bitmap in .NET Framework

Curtis Chau
Curtis Chau
Updated: 29 de junio de 2026

En una aplicación de escritorio .NET Framework como WinForms, asignar un IronBarcode AnyBitmap directamente a un System.Drawing.Image o Bitmap falla en tiempo de compilación. Un caso común es enlazar un código de barras generado a un PictureBox, que solo acepta objetos System.Drawing.Image.

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

El código a continuación provoca el error:

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

Tanto BarcodeWriter.Image como .ToBitmap() devuelven un IronSoftware.Drawing.AnyBitmap. Ese tipo sí admite la conversión implícita a System.Drawing.Bitmap o Image, pero solo en .NET 6, .NET 7, .NET 8 o versiones superiores. En .NET Framework, los operadores implícitos y el puenteo de tipos internos no siempre se resuelven, especialmente cuando los tipos provienen de diferentes bibliotecas o capas de compatibilidad.

Solución

Option 1: Install System.Drawing.Common

Agregue el paquete NuGet System.Drawing.Common para que los operadores de conversión se resuelvan contra un ensamblado de dibujo consistente.

.NET CLI:

dotnet add package System.Drawing.Common
SHELL

Consola del Administrador de Paquetes:

Install-Package System.Drawing.Common
SHELL

SDK-style .csproj:

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

Opción 2: Convertir a través de un flujo

Cuando prefiera no cambiar las referencias de paquetes, convierta el bitmap a través de un flujo compatible con GDI y entregue el resultado al 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() escribe el AnyBitmap en un formato de imagen compatible con GDI, y Image.FromStream analiza ese flujo en un System.Drawing.Image nativo.

Por favor nota: También puedes serializar el AnyBitmap con ToStream() si necesitas un flujo genérico en lugar de uno específico de Windows.

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien estructurados y visualmente atractivos.

Leer más

¿Listo para empezar?

Nuget Downloads 2,540,041Versión:2026.11recién lanzado