.NET FrameworkでのAnyBitmapからSystem.Drawing.Bitmapへの変換
WinFormsなど for .NET Frameworkデスクトップアプリで、IronBarcode System.Drawing.Imageオブジェクトのみを受け入れます。
Cannot implicitly convert type 'IronSoftware.Drawing.AnyBitmap' to 'System.Drawing.Image'
以下のコードはエラーを引き起こします。
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()
IronSoftware.Drawing.AnyBitmapを返します。 その型はImageへの暗黙的な変換をサポートしますが、これは.NET 6、.NET 7、.NET 8、またはそれ以上でのみです。 .NET Frameworkでは、暗黙の演算子と内部型のブリッジングが常に解決されるわけではなく、特に異なるライブラリや互換性レイヤーからの型の場合ではそうです。
解決策
オプション1: System.Drawing.Commonをインストール
変換演算子が一貫した描画アセンブリに対して解決されるように、System.Drawing.Common NuGetパッケージを追加してください。
.NET CLI:
dotnet add package System.Drawing.Common
dotnet add package System.Drawing.Common
パッケージマネージャーコンソール:
Install-Package System.Drawing.Common
Install-Package System.Drawing.Common
SDKスタイル.csproj:
<PackageReference Include="System.Drawing.Common" Version="8.0.0" />
<PackageReference Include="System.Drawing.Common" Version="8.0.0" />
オプション2: ストリームを通じて変換
パッケージ参照を変更したくない場合は、ビットマップをGDI互換のストリームを通して変換し、その結果を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
System.Drawing.Imageに解析します。

