AnyBitmap to System.Drawing.Bitmap in .NET Framework

This article was translated from English: Does it need improvement?
Translated
View the article in English

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();
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()
$vbLabelText   $csharpLabel

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
dotnet add package System.Drawing.Common
SHELL

Package Manager Console:

Install-Package System.Drawing.Common
Install-Package System.Drawing.Common
SHELL

SDK-Stil .csproj:

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

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
}
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
$vbLabelText   $csharpLabel

ToWindowsBitmapStream() schreibt das AnyBitmap in ein GDI-kompatibles Bildformat, und Image.FromStream analysiert diesen Stream in ein natives System.Drawing.Image.

Hinweis:Sie können das AnyBitmap auch mit ToStream() serialisieren, wenn Sie einen allgemeinen Stream anstelle eines Windows-spezifischen benötigen.

Curtis Chau
Technischer Autor

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

Weiterlesen
Bereit anzufangen?
Nuget Downloads 2,317,217 | Version: 2026.7 gerade veröffentlicht
Still Scrolling Icon

Scrollst du immer noch?

Sie brauchen schnell einen Beweis? PM > Install-Package BarCode
Führen Sie ein Beispiel aus und beobachten Sie, wie Ihre Zeichenkette zu einem BarCode wird.