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;
}
我使用上面的代碼生成條形碼,但我的掃描儀無法讀取生成的條形碼(對於55536)。 但是,如果我將數據值切換到「1111」或「2222」,那麼條形碼將被很好地讀取。 所以我認爲這不是一個掃描儀問題,任何人都知道,該代碼有什麼問題? 請指教。使用免費生成條形碼3 of 9字體
你從哪裏得到這個字體? – 2013-04-25 17:09:46
和後續問題,它可以讀取11111?你並不是真的比較蘋果和蘋果,因爲真正的條碼是五位數字,但是測試條碼是四位。 – 2013-04-25 17:16:03
不相關,但您將新的位圖(1,1)分配給條形碼,然後將其設置爲不同的位圖實例。第一個位圖泄漏是因爲你永遠不會處理它。你應該使用帶有一次性對象的using()語句,因爲它將使得一次性對象的範圍更加明顯,並且使得處理處理問題更少。 Arial字體也在泄漏。 – Pete 2013-04-25 17:52:29