使用Free 3 of 9字体生成条形码

Exp*_* be 5 c# barcode

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;
}
Run Code Online (Sandbox Code Playgroud)

我使用上面的代码生成条形码,但我的扫描仪无法读取生成的条形码(对于55536).但是,如果我将数据值切换为"1111"或"2222",则可以很好地读取条形码.所以我认为这不是扫描仪问题,任何人都知道,该代码有什么问题?请指教.

Dou*_* L. 3

如果您只使用数字,您可以尝试 3 of 9 基本字体(不带扩展)。从 Write 打印相同的条形码并进行比较,看看您的解决方案是否正在构建完整的条形码或是否被截断。