AnyBitmap to System.Drawing.Bitmap in .NET Framework

Curtis Chau
Curtis Chau
Updated: 29 juin 2026

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'
Text

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();

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
SHELL

Console du Package Manager :

Install-Package System.Drawing.Common
SHELL

SDK-style .csproj:

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

ToWindowsBitmapStream() écrit le AnyBitmap dans un format d'image compatible GDI, et Image.FromStream analyse ce flux dans un System.Drawing.Image natif.

Veuillez noter: Vous 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 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 et créer des manuels bien structurés et visuellement attrayants.

Lire la suite

Prêt à commencer?

Nuget Downloads 2,540,041Version :2026.11vient de sortir