.NET Framework'te AnyBitmap to System.Drawing.Bitmap

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

.NET Framework masaüstü uygulamalarında WinForms gibi, bir IronBarcode AnyBitmap doğrudan bir System.Drawing.Image veya Bitmap atamak derleme zamanında başarısız olur. Yaygın bir durum, oluşturulan bir barkodu yalnızca System.Drawing.Image nesnelerini kabul eden bir PictureBox'a bağlamaktır.

Cannot implicitly convert type 'IronSoftware.Drawing.AnyBitmap' to 'System.Drawing.Image'

Aşağıdaki kod hata tetikler:

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

Hem BarcodeWriter.Image hem de .ToBitmap() bir IronSoftware.Drawing.AnyBitmap döndürür. Bu tür, yalnızca .NET 6, .NET 7, .NET 8 veya üzeri sürümlerde System.Drawing.Bitmap veya Image'e örtük dönüştürmeyi destekler. .NET Framework'te örtük operatörler ve dahili tür köprüleme her zaman çözülmez, özellikle türler farklı kütüphanelerden veya uyumluluk katmanlarından geldiğinde.

Çözüm

Seçenek 1: System.Drawing.Common Yükleyin

Dönüşüm operatörlerinin tutarlı bir çizim derlemesi karşısında çözülmesi için System.Drawing.Common NuGet paketini ekleyin.

.NET CLI:

dotnet add package System.Drawing.Common
dotnet add package System.Drawing.Common
SHELL

Paket Yöneticisi Konsolu:

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

SDK tarzı .csproj:

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

Seçenek 2: Bir Akışla Dönüştürme

Paket referanslarını değiştirmek istemediğinizde, bit eşlemeyi GDI uyumlu bir akış üzerinden dönüştürün ve sonucu PictureBox'a verin:

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'yı GDI uyumlu bir görüntü formatına yazar ve Image.FromStream bu akışı yerel bir System.Drawing.Image'e çözümler.

Lütfen dikkate alınBir Windows'a özgü kalmak yerine genel bir akış ihtiyacınız varsa ToStream() ile AnyBitmap'i de seri hale getirebilirsiniz.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku
Başlamaya Hazır mısınız?
Nuget İndirmeler 2,317,217 | Sürüm: 2026.7 yeni yayınlandı
Still Scrolling Icon

Hâlâ Kaydırıyor Musunuz?

Hızlıca kanıt ister misiniz? PM > Install-Package BarCode
bir örnek çalıştır dizginizin barkoda dönüştüğünü izle.