AnyBitmap을 .NET Framework에서 System.Drawing.Bitmap으로 변환
.NET Framework 데스크톱 앱인 WinForms에서 IronBarcode AnyBitmap를 직접 System.Drawing.Image 또는 Bitmap에 할당하면 컴파일 시간에 실패합니다. 흔한 사례로는 생성된 바코드를 PictureBox에 바인딩하는 상황인데, 이것은 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()
BarcodeWriter.Image 및 .ToBitmap()는 모두 IronSoftware.Drawing.AnyBitmap를 반환합니다. 이 유형은 System.Drawing.Bitmap 또는 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-style .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
ToWindowsBitmapStream()는 AnyBitmap를 GDI 호환 이미지 포맷으로 작성하고, Image.FromStream는 그 스트림을 네이티브 System.Drawing.Image로 파싱합니다.

