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();
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
패키지 관리자 콘솔:
Install-Package System.Drawing.Common
SDK-style .csproj:
<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
}
ToWindowsBitmapStream()는 AnyBitmap를 GDI 호환 이미지 포맷으로 작성하고, Image.FromStream는 그 스트림을 네이티브 System.Drawing.Image로 파싱합니다.

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.