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; 
} 

Generuję kod kreskowy z powyższym kodem, ale mój skaner nie może odczytać wygenerowanego kodu kreskowego (dla 55536). ALE jeśli zmienię wartość danych na "1111" lub "2222", kod kreskowy zostanie odczytany bardzo dobrze. , więc myślę, że to nie jest problem ze skanerem, czy ktoś wie, co jest nie tak z tym kodem? proszę o poradę.Generowanie kodu kreskowego za darmo 3 z 9 czcionek

+0

Skąd masz tę czcionkę? –

+0

I kolejne pytanie, czy może przeczytać 11111? Naprawdę nie porównujesz jabłek do jabłek, ponieważ prawdziwy kod kreskowy ma pięć cyfr, ale testowe to cztery. –

+0

Niepowiązane, ale przypisujesz nową mapę bitową (1, 1) do kodu kreskowego, a następnie ustawiasz ją na inną instancję Bitmapy. Pierwsza bitmapa przecieka, ponieważ nigdy jej nie pozbywasz. Powinieneś użyć instrukcji using() z obiektami jednorazowymi, ponieważ sprawi to, że zakres przedmiotów jednorazowych stanie się bardziej oczywisty i sprawi, że zajmowanie się usuwaniem będzie mniej problematyczne. Również wyciek czcionki Arial. – Pete

Odpowiedz

3

Jeśli używasz tylko liczb, możesz wypróbować 3 z 9 podstawowych czcionek (bez rozszerzonego). Wydrukuj ten sam kod kreskowy z zapisu i porównaj je, aby sprawdzić, czy twoje rozwiązanie buduje kompletny kod kreskowy, czy też jest obcinane.

-2

spróbować prefiks i sufiks:

czemu przekazywania danych w

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

Nie jestem pewien, czy ta odpowiedź jest w jakiś sposób powiązana z zadawanym pytaniem. – Rahatur

0

1.If używasz obsługiwanych znaków otoczonych przycisk „*” Zatrzymaj i uruchom znaków Prawdopodobnie problemem jest rozmiar kodu kreskowego lub rozdzielczość drukowania. 2.Upewnij się, że rozmiar każdej litery ma taki sam rozmiar czcionki. Mieszane rozmiary nie będą działać. 3.Gdy eksperymentujesz ze zmianą koloru pasków, pamiętaj, że ciemniejsze kolory są lepsze. Pastele nie są tak dobre. Czerwony jest nie-nie. Oto referencja dla Ciebie: asp.net barcode generator using 3 of 9 font.