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

위의 코드로 바코드를 생성하지만 스캐너에서 생성 된 바코드를 읽을 수 없습니다 (55536 용). 그러나 "1111"또는 "2222"로 데이터 값을 전환하면 바코드가 잘 읽혀집니다. 그래서 나는 스캐너 문제가 아니라고 생각합니다. 아무도 알지 못하는데, 그 코드에 무슨 문제가 있습니까? 상담하십시오.무료 3/9 글꼴로 바코드 생성

+0

어디에서이 글꼴을 가져 왔습니까? –

+0

그리고 후속 질문, 11111을 읽을 수 있습니까? 실제 바코드는 5 자리이지만 테스트는 4이므로 사과와 사과를 비교하지 않습니다. –

+0

관련이 없지만 새 비트 맵 (1, 1)을 바코드에 할당 한 다음 나중에 다른 비트 맵 인스턴스로 설정합니다. 첫 번째 비트 맵은 결코 처리하지 않기 때문에 누출됩니다. 처분 할 수있는 객체의 범위를보다 명확하게하고 처분을 덜 문제있게 다루기 때문에 using() 문을 일회용 객체와 함께 사용해야합니다. 또한 Arial 글꼴이 유출됩니다. – Pete

답변

3

숫자 만 사용하는 경우 3 가지 중 9 가지 기본 글꼴을 사용할 수 있습니다 (확장하지 않음). Write에서 동일한 바코드를 인쇄하고 솔루션을 비교하여 솔루션이 전체 바코드를 작성하는지 또는 잘 렸는지 확인하십시오.

-2

이 접두사하려고 접미사 :

는 "*"중지 및 시작 문자로 둘러싸인 지원 문자를 사용하고 설치 1. 왜이

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

이 답변이 어쨌든 질문과 관련이 있는지 확실하지 않습니다. – Rahatur

0

내에서 데이터를 전달하는, 기회는 바코드의 크기 또는 인쇄 해상도입니다. 2. 각 문자의 크기가 동일한 글꼴 크기인지 확인하십시오. 혼합 크기는 작동하지 않습니다. 3. 막대의 색상을 변경하여 실험 할 때는 어두운 색상이 더 좋습니다. 파스텔은별로 좋지 않습니다. 빨간색은 아니야. 다음은 참조 용입니다 : asp.net barcode generator using 3 of 9 font.