public Bitmap CreateBarcode(string data)
{
data = "55536";
string barcodeData = "*" + data + "*";
Bitmap barcode = new Bitmap(1, 1);
Font threeOfNine = new Font("Free 3 of 9 Extended", 31, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
Font arial = new Font("Arial", 13,
System.Drawing.FontStyle.Regular,
System.Drawing.GraphicsUnit.Point);
Graphics graphics = Graphics.FromImage(barcode);
SizeF dataSize = graphics.MeasureString(barcodeData, threeOfNine);
dataSize.Height = 70;
barcode = new Bitmap(barcode, dataSize.ToSize());
graphics = Graphics.FromImage(barcode);
graphics.Clear(Color.White);
graphics.TextRenderingHint = TextRenderingHint.SingleBitPerPixel;
graphics.DrawString(barcodeData, threeOfNine, new SolidBrush(Color.Black), 0, 0);
graphics.DrawString(data, arial, new SolidBrush(Color.Black), 50, 40);
graphics.Flush();
threeOfNine.Dispose();
graphics.Dispose();
return barcode;
}
Yukarıdaki kodla barkod oluşturuyorum ancak tarayıcım üretilen barkodu okuyamadı (55536 için). AMA Eğer veri değerini "1111" veya "2222" ye değiştirirsem, barkod çok iyi okunabilir. bu yüzden bir tarayıcı sorunu olmadığını düşünüyorum, herkes biliyor, bu kodun nesi var? lütfen tavsiye.Ücretsiz 3 of 9 yazı tipi ile barkod oluşturun
Bu yazı tipini nereden aldınız? –
Ve bir takip sorusu, 11111 okuyabilir mi? Elmaları elmalarla kıyaslamıyorsunuz çünkü gerçek barkod beş basamaklı ama test olanları dört. –
İlişkisiz, ancak barkod için yeni bir Bitmap (1, 1) atar ve daha sonra bunu farklı bir Bitmap örneğine ayarlarsınız. İlk bitmap sızar çünkü asla atmazsınız. Tek kullanımlık nesnelerin kapsamını daha açık hale getirecek ve elden çıkarmayı daha az sorunlu hale getirecek şekilde kullanacağınız use() deyimini tek kullanımlık nesnelerle kullanmalısınız. Ayrıca Arial yazı tipi sızdırıyor. – Pete