AnyBitmap to System.Drawing.Bitmap in .NET Framework

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

Dans une application de bureau .NET Framework telle que WinForms, l'affectation d'un IronBarcode AnyBitmap directement à un System.Drawing.Image ou Bitmap échoue à la compilation. Un cas courant est la liaison d'un code-barres généré à un PictureBox, qui n'accepte que des objets System.Drawing.Image.

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

Le code ci-dessous génère l'erreur :

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

Les deux BarcodeWriter.Image et .ToBitmap() renvoient un IronSoftware.Drawing.AnyBitmap. Ce type prend en charge la conversion implicite vers System.Drawing.Bitmap ou Image, mais uniquement sur .NET 6, .NET 7, .NET 8, ou supérieur. Sur .NET Framework, les opérateurs implicites et le pontage de type interne ne se résolvent pas toujours, surtout lorsque les types proviennent de différentes bibliothèques ou couches de compatibilité.

Solution

Option 1: Install System.Drawing.Common

Ajoutez le package NuGet System.Drawing.Common pour que les opérateurs de conversion se résolvent sur un assemblage de dessin cohérent.

.NET CLI :

dotnet add package System.Drawing.Common
dotnet add package System.Drawing.Common
SHELL

Console du Package Manager :

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

SDK-style .csproj:

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

Option 2 : Convertir via un flux

Lorsque vous préférez ne pas modifier les références de package, convertissez le bitmap via un flux compatible GDI et remettez le résultat à l'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() écrit le AnyBitmap dans un format d'image compatible GDI, et Image.FromStream analyse ce flux dans un System.Drawing.Image natif.

Veuillez noterVous pouvez également sérialiser l'AnyBitmap avec ToStream() si vous avez besoin d'un flux générique plutôt que d'un spécifiquement pour Windows.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite
Prêt à commencer?
Nuget Téléchargements 2,317,217 | Version : 2026.7 vient de sortir
Still Scrolling Icon

Vous faites encore défiler ?

Vous voulez une preuve rapidement ? PM > Install-Package BarCode
exécuter un échantillon regarder votre chaîne devenir un code-barres.