GDI 绘制条码文本
Posted
技术标签:
【中文标题】GDI 绘制条码文本【英文标题】:GDI draw barcode text 【发布时间】:2017-05-31 07:05:03 【问题描述】:我正在尝试在C#
中使用GDI
来绘制Code 128
条形码。我有 .ttf
font 应该作为矢量图形(不是 rastr):
var bmp = new Bitmap(900, 100);
var g = Graphics.FromImage(bmp);
g.Clear(Color.White);
g.SmoothingMode = SmoothingMode.None;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
g.DrawString(value, new Font("Code 128", 72), Brushes.Black, 0, 50);
g.DrawPath(new Pen(Brushes.Black, (float) 1.0), new GraphicsPath());
g.Flush();
结果图像很宽,我想将其缩放到 0.5(仅限 x 轴)。但是当我将 X 缩放到 450 时,图像变得不清晰。我注意到图像(当它仍然是 900 时)略微模糊:
如果图像如下所示,我认为我的问题将得到解决:
如何以这种方式绘制字符串?
【问题讨论】:
同时关闭 InterpolationMode!结果必须适合最近的像素。 谢谢@taw 我试过了,但结果是一样的 这些对我有用:e.Graphics.SmoothingMode = SmoothingMode.None; e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit; e.Graphics.InterpolationMode = InterpolationMode.NearestNeighbor;
【参考方案1】:
文本的平滑由 TextRenderingHint 属性控制。只需在呈现字符串之前设置此属性:
g.TextRenderingHint = TextRenderingHint.SingleBitPerPixel;
【讨论】:
以上是关于GDI 绘制条码文本的主要内容,如果未能解决你的问题,请参考以下文章