【问题标题】:Zen Barcode with characters. Winforms [closed]Zen 条形码与字符。 Winforms [关闭]
【发布时间】:2018-01-13 21:08:35
【问题描述】:

您好,有谁知道在绘制条形码时如何在底部也包含数字/字符串?

这是我的代码

     private void btnGenerate_Click_1(object sender, EventArgs e)
    {
        Zen.Barcode.Code128BarcodeDraw barcode = Zen.Barcode.BarcodeDrawFactory.Code128WithChecksum;
        pictureBox1.Image = barcode.Draw(textBox1.Text, 50);
    }

PS 我应该将它保存在数据库列中并在那里调用它吗?谢谢

来自 VVatashi 先生回答的更新基础。这是新的输出。

但它与条形码重叠,我希望它看起来像这样:

谢谢

【问题讨论】:

  • 如果您还不知道如何使用 Graphics.FromImage(),请保持简单并在 PictureBox 下方放置一个标签。没有必要将条形码放入数据库中,只需保存文本即可。

标签: c# winforms barcode zen


【解决方案1】:

您可以根据您的代码使用 System.Drawing 在图像上打印文本:

Zen.Barcode.Code128BarcodeDraw barcode = Zen.Barcode.BarcodeDrawFactory.Code128WithChecksum;
var image = barcode.Draw(textBox1.Text, 50);

using (var graphics = Graphics.FromImage(image))
using (var font = new Font("Consolas", 12)) // Any font you want
using (var brush = new SolidBrush(Color.White))
using (var format = new StringFormat() { LineAlignment = StringAlignment.Far }) // To align text above the specified point
{
    // Print a string at the left bottom corner of image
    graphics.DrawString(textBox1.Text, font, brush, 0, image.Height, format);
}

pictureBox1.Image = image;

有点不清楚数据库与您问题的第一部分的关系。

更新。 哦,我没有注意到生成的条形码图是整个图像。在这种情况下,您可以在较大的图像上绘制条形码和文本:

Zen.Barcode.Code128BarcodeDraw barcode = Zen.Barcode.BarcodeDrawFactory.Code128WithChecksum;
var barcodeImage = barcode.Draw(textBox1.Text, 50);

var resultImage = new Bitmap(barcodeImage.Width, barcodeImage.Height + 20); // 20 is bottom padding, adjust to your text

using (var graphics = Graphics.FromImage(resultImage))
using (var font = new Font("Consolas", 12))
using (var brush = new SolidBrush(Color.Black))
using (var format = new StringFormat()
{
    Alignment = StringAlignment.Center, // Also, horizontally centered text, as in your example of the expected output
    LineAlignment = StringAlignment.Far
})
{
    graphics.Clear(Color.White);
    graphics.DrawImage(barcodeImage, 0, 0);
    graphics.DrawString(textBox1.Text, font, brush, resultImage.Width / 2, resultImage.Height, format);
}

pictureBox1.Image = resultImage;

【讨论】:

  • 先生,它有效,但数字与条形码重叠。等一下在问题中张贴图片
  • @FutureDev,我更新了答案。
  • 非常感谢先生。条形码扫描仪可以读取吗?
  • @FutureDev,您可以使用onlinebarcodereader.com 等一些 Web 服务来测试您的输出。现在它似乎生成了一个有效的条形码。也请不要叫我先生,其实我是女孩。
  • 哦,对不起,女士!
猜你喜欢
  • 1970-01-01
  • 2011-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-05
  • 2011-02-04
  • 1970-01-01
  • 2014-04-17
相关资源
最近更新 更多