2013-04-25 16 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; 
} 

ho generare codice a barre con il codice di cui sopra, ma il mio scanner non riesce a leggere il codice a barre generato (per 55536). MA se cambio il valore dei dati su "1111" o "2222", il codice a barre viene letto molto bene. quindi penso che non sia un problema con lo scanner, qualcuno lo sa, cosa c'è di sbagliato in quel codice? per favore consiglio.Generare codice a barre con gratuito 3 su 9 carattere

+0

Da dove hai preso questo carattere? –

+0

E una domanda successiva, può leggere 11111? Non stai davvero confrontando le mele con le mele perché il codice a barre reale è di cinque cifre, ma quelle di prova sono quattro. –

+0

Non correlato, ma si assegna un nuovo Bitmap (1, 1) al codice a barre e successivamente lo si imposta su un'istanza Bitmap diversa. La prima bitmap perde perché non la si elimina mai. Si dovrebbe usare l'istruzione using() con gli oggetti usa e getta poiché renderà più ovvia la portata degli oggetti usa e getta e renderà meno problematica la gestione dello smaltimento. Anche il font Arial perde. – Pete

risposta

3

Se si utilizzano solo numeri, è possibile provare il 3 di 9 carattere di base (senza l'estensione). Stampa lo stesso codice a barre da Write e confrontali per verificare se la soluzione sta creando il codice a barre completo o se viene troncato.

-2

cercano di prefisso e suffisso:

perché stai passando i dati all'interno del

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

Non sono sicuro se questa risposta sia comunque correlata alla domanda posta. – Rahatur

0

1. Se si sta utilizzando i caratteri supportati circondate dai caratteri "*" fermarsi e iniziare, è probabile che il problema sia la dimensione del codice a barre o la risoluzione della stampa. 2.Assicurarsi che la dimensione di ogni carattere abbia le stesse dimensioni del carattere. Le dimensioni miste non funzioneranno. 3. Quando si sperimenta la modifica del colore delle barre, ricordare che i colori più scuri sono migliori. I pastelli non sono così buoni. Il rosso è un no-no. Ecco un riferimento per voi: asp.net barcode generator using 3 of 9 font.

Problemi correlati