GDI绘制条码文字

GDI draw barcode text

我正在尝试使用 C# 中的 GDI 绘制 Code 128 条形码。我有 .ttf 字体,应该用作矢量图形(不是 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 时)有点模糊:

我想我的问题会得到解决,如果图像看起来像这里:

如何绘制字符串?

文本的平滑由 TextRenderingHint 属性 控制。只需在呈现字符串之前设置此 属性:

g.TextRenderingHint = TextRenderingHint.SingleBitPerPixel;