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/9 글꼴로 바코드 생성
어디에서이 글꼴을 가져 왔습니까? –
그리고 후속 질문, 11111을 읽을 수 있습니까? 실제 바코드는 5 자리이지만 테스트는 4이므로 사과와 사과를 비교하지 않습니다. –
관련이 없지만 새 비트 맵 (1, 1)을 바코드에 할당 한 다음 나중에 다른 비트 맵 인스턴스로 설정합니다. 첫 번째 비트 맵은 결코 처리하지 않기 때문에 누출됩니다. 처분 할 수있는 객체의 범위를보다 명확하게하고 처분을 덜 문제있게 다루기 때문에 using() 문을 일회용 객체와 함께 사용해야합니다. 또한 Arial 글꼴이 유출됩니다. – Pete