.NET FrameworkでのAnyBitmapからSystem.Drawing.Bitmapへの変換

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

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

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
SHELL

パッケージマネージャーコンソール:

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

SDKスタイル.csproj:

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

オプション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
$vbLabelText   $csharpLabel

System.Drawing.Imageに解析します。

ご注意任意のビットマップをWindows固有のものではなく汎用ストリームが必要な場合、ToStream()でシリアライズすることもできます。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

準備はできましたか?
Nuget ダウンロード 2,317,217 | バージョン: 2026.7 リリースされたばかり
Still Scrolling Icon

まだスクロールしていますか?

すぐに証拠が欲しいですか? PM > Install-Package BarCode
サンプルを実行する 文字列が BarCode になるのを見る。