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
Skąd masz tę czcionkę? –
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. –
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