AnyBitmap to System.Drawing.Bitmap in .NET Framework
In einer .NET Framework-Desktop-App wie WinForms schlägt das direkte Zuweisen eines IronBarcode AnyBitmap an einen System.Drawing.Image oder Bitmap zur Kompilierzeit fehl. Ein häufiger Fall ist das Binden eines generierten Barcodes an ein PictureBox, das nur System.Drawing.Image-Objekte akzeptiert.
Cannot implicitly convert type 'IronSoftware.Drawing.AnyBitmap' to 'System.Drawing.Image'
Der folgende Code löst den Fehler aus:
var myBarcode = BarcodeWriter.CreateBarcode("12345", BarcodeWriterEncoding.EAN8);
// These lines cause compile-time errors
Image myBarcodeImage = myBarcode.Image;
Bitmap myBarcodeBitmap = myBarcode.ToBitmap();
Sowohl BarcodeWriter.Image als auch .ToBitmap() geben ein IronSoftware.Drawing.AnyBitmap zurück. Dieser Typ unterstützt die implizite Konvertierung zu System.Drawing.Bitmap oder Image, aber nur auf .NET 6, .NET 7, .NET 8 oder höher. Im .NET Framework lösen sich die impliziten Operatoren und internen Typüberbrückungen nicht immer auf, insbesondere wenn die Typen aus verschiedenen Bibliotheken oder Kompatibilitätsschichten kommen.
Lösung
Option 1: Install System.Drawing.Common
Fügen Sie das System.Drawing.Common NuGet-Paket hinzu, sodass die Konvertierungsoperatoren gegen eine konsistente Zeichnungsassembly aufgelöst werden.
.NET CLI:
dotnet add package System.Drawing.Common
Package Manager Console:
Install-Package System.Drawing.Common
SDK-Stil .csproj:
<PackageReference Include="System.Drawing.Common" Version="8.0.0" />
Option 2: Über einen Stream umwandeln
Wenn Sie die Paketreferenzen lieber nicht ändern möchten, konvertieren Sie das Bitmap über einen GDI-kompatiblen Stream und übergeben Sie das Ergebnis an die 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() schreibt das AnyBitmap in ein GDI-kompatibles Bildformat, und Image.FromStream analysiert diesen Stream in ein natives System.Drawing.Image.

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender Handbücher.