使用code128.BarHeight时在条形码下方显示文本[关闭]

Posted

技术标签:

【中文标题】使用code128.BarHeight时在条形码下方显示文本[关闭]【英文标题】:Display text underneath barcode when using code128.BarHeight [closed] 【发布时间】:2021-01-24 23:44:57 【问题描述】:

我正在尝试在条形码下方显示文本,但到目前为止还没有成功。

这是我迄今为止尝试过的;

Bitmap bmpButton = new Bitmap(206, 38);
Bitmap bmpBackground = new Bitmap(CreateBarcode("AA12334566"));

// We use the default image as a background brush
TextureBrush objBrush = new TextureBrush(bmpBackground);

Graphics objGraphics;
objGraphics = Graphics.FromImage(bmpButton);
// objGraphics.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias

// We draw the background image...
objGraphics.FillRectangle(objBrush, 0, 0, 206, 38);

objGraphics.DrawString("AA1234567", new System.Drawing.Font("Arial", 8, FontStyle.Regular), SystemBrushes.WindowText, new Point(0, 14));

Response.ContentType = "image/jpeg";
bmpButton.Save(Response.OutputStream, ImageFormat.Jpeg);


private System.Drawing.Image CreateBarcode(string data)

Barcode128 code128 = new Barcode128();
code128.Code = data;
System.Drawing.Image barCode = code128.CreateDrawingImage(System.Drawing.Color.Black, System.Drawing.Color.White);
return barCode;

【问题讨论】:

你可以增加14,而不是14使用28,new Point(0, 28) 是的,请始终记住计算机图形的原点 0,0 位于左上角,而较大的 y 值位于屏幕下方。这可能与您在数学课上绘制的每张图都不同;您只记得并习惯的事情之一 我已尝试将 14 更改为 28 或更高的数字,但文本消失了。 【参考方案1】:

代码

        private void Form1_Load(object sender, EventArgs e)
        
            Bitmap bmpButton = new Bitmap(206, 48);
            Graphics graphics = Graphics.FromImage(bmpButton);

            graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
            graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
            graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;


            graphics.FillRectangle(Brushes.White, new Rectangle(0, 0, 206, 48));
            graphics.DrawImage(CreateBarcode("AA12334566"), 5, 5);
            graphics.DrawString("AA12334566",new Font(FontFamily.GenericSansSerif, 12), Brushes.Black, new RectangleF(0, 28, 206, 20));

            graphics.Save();
            bmpButton.Save(@"D:\123.jpeg", ImageFormat.Jpeg);
        

        private System.Drawing.Image CreateBarcode(string data)
        
            Barcode128 code128 = new Barcode128();
            code128.Code = data;
            System.Drawing.Image barCode = code128.CreateDrawingImage(System.Drawing.Color.Black, System.Drawing.Color.White);
            return barCode;
        

生成的图像

请不要拉伸条形码图像,因为这会导致错误的转换

////// 旧答案 /////

objGraphics.DrawString("AA1234567", new System.Drawing.Font("Arial", 8, FontStyle.Regular), SystemBrushes.WindowText, new Point(0, 14));

在上面的行末尾[new Point(0, 14)]指定文本的位置为x轴和y轴,如果你想降低文本的位置你可以增加 y 而不是 14 使用 28

【讨论】:

我已尝试将 14 更改为 28 或更高的数字,但文本消失了。 我已经编辑了我的答案并且它的工作完美无缺 如果我的回答解决了您的问题,您将其标记为已接受的答案 我还能用 code128.BarHeight = 55 吗? 是的,你可以使用任何你想要的东西,但是你需要相应地调整图像的宽度和高度。

以上是关于使用code128.BarHeight时在条形码下方显示文本[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

C# 爱普生打印机利用code128字体打印条形码时怎么选择code128字体

应用程序运行时在后台使用 SMTP Mailcore2 发送邮件

Acumatica 和 code128 条码无法扫描

使用允许我手动指定子集的 FPDF 创建 code128 条形码

利用Code128字体将文本转换为code128条形码

在 PHP 中创建 code128 条形码,使用字体而不是将其呈现为图像