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

时间:2013-04-25 17:07:44

标签: 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;
}

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

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

1.如果您正在使用由“*”停止并启动字符包围的受支持字符,则问题可能是条形码的大小或打印的分辨率。 2.确保每个字符的大小是相同的字体大小。混合尺寸不起作用。 3.在尝试更改条形颜色时,请记住颜色越深越好。粉彩不太好。红色是禁忌。 以下是您的参考:asp.net barcode generator using 3 of 9 font

答案 2 :(得分:-2)

尝试使用前缀和后缀:

为什么要在

中传递数据
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.
}