2013-04-25 10 views
5
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

+0

Bu yazı tipini nereden aldınız? –

+0

Ve bir takip sorusu, 11111 okuyabilir mi? Elmaları elmalarla kıyaslamıyorsunuz çünkü gerçek barkod beş basamaklı ama test olanları dört. –

+0

İ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

cevap

3

Yalnızca sayılar kullanıyorsanız, 9 temel yazı tipinden 3'ünü (uzatmadan) deneyebilirsiniz. Aynı barkodu Yazdır'dan yazdırın ve çözümünüzün tüm barkodu oluşturup oluşturmadığını ya da kısaltılmış olup olmadığını görmek için bunları karşılaştırın.

-2

önek denemek ve eki:

siz "*" dur ve başlangıç ​​karakterleri çevrili desteklenen karakterleri kullandığınız 1.If neden

public Bitmap CreateBarcode(string data) 
{ 
    data="55536"; //dont pass the data from here pass it from outside method for eg. call it from the  button click or whatever control you are using. 
} 
+0

Bu sorunun, sorulan soruyla ilgili olup olmadığı kesin değil. – Rahatur

0

içinde veri geçiyoruz, Sorunlar, ya barkodun boyutu ya da baskının çözünürlüğüdür. 2.Her karakterin boyutunun aynı yazı tipi boyutunda olduğundan emin olun. Karışık boyutlar çalışmaz. 3. Çubukların rengini değiştirmeyi denerken, daha koyu renklerin daha iyi olduğunu unutmayın. Pasteller pek iyi değil. Kırmızı no-hayır. İşte size bir referans: asp.net barcode generator using 3 of 9 font.