AnyBitmap을 .NET Framework에서 System.Drawing.Bitmap으로 변환

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

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

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
SHELL

패키지 관리자 콘솔:

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

SDK-style .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

ToWindowsBitmapStream()AnyBitmap를 GDI 호환 이미지 포맷으로 작성하고, Image.FromStream는 그 스트림을 네이티브 System.Drawing.Image로 파싱합니다.

참고해 주세요Windows 전용이 아닌 일반 스트림이 필요하다면 ToStream()으로 AnyBitmap을 직렬화할 수도 있습니다.

Curtis Chau
기술 문서 작성자

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

커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.

시작할 준비 되셨나요?
Nuget 다운로드 2,317,217 | 버전: 2026.7 방금 출시
Still Scrolling Icon

아직도 스크롤하고 계신가요?

빠른 증거를 원하시나요? PM > Install-Package BarCode
샘플을 실행하세요 실이 바코드로 변하는 모습을 지켜보세요.