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;
我正在尝试使用 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;