我正在尝试从一个程序创建的图像打印40x40毫米标签。
标签上必须有文字和徽标。因为标签是相当小的,我发现自己在摆弄如何做适当的烟雾,反别名等。
我尝试过multipl设置,但我不确定这是否是正确的方法。
首先,我绘制容器位图:
private Bitmap DrawLabelCircle()
{
var labelImage = new Bitmap(152, 152);
using (Graphics gfx = Graphics.FromImage(labelImage))
{
var pen = new Pen(Color.Black, 1);
gfx.SmoothingMode = SmoothingMode.AntiAlias;
gfx.DrawEllipse(pen, 1, 1, 150, 150);
}
return labelImage;
}然后我在容器位图上覆盖不同的文本片段。
private Bitmap DrawDistributorTextRectangle(string text)
{
var bitmap = new Bitmap(113, 113);
var rectangle = new Rectangle(0, 0, 110, 110);
using (Graphics gfx = Graphics.FromImage(bitmap))
{
gfx.SmoothingMode = SmoothingMode.AntiAlias;
gfx.InterpolationMode = InterpolationMode.HighQualityBicubic;
gfx.PixelOffsetMode = PixelOffsetMode.HighQuality;
var font = new Font(FontFamily.GenericSansSerif, 5, FontStyle.Regular, GraphicsUnit.Point);
var brush = new SolidBrush(Color.Black);
gfx.TextRenderingHint = TextRenderingHint.AntiAlias;
gfx.DrawString(text, font, brush, rectangle);
}
bitmap.RotateFlip(RotateFlipType.Rotate270FlipNone);
return bitmap;
}将该文本覆盖在先前创建的位图上。
private Bitmap DistributorTextOverlay(Bitmap source, Bitmap overlay)
{
var result = new Bitmap(source.Width, source.Height);
var graphics = Graphics.FromImage(result);
graphics.CompositingMode = CompositingMode.SourceOver;
graphics.SmoothingMode = SmoothingMode.HighQuality;
graphics.DrawImage(source, 0, 0);
graphics.DrawImage(overlay, 120, 0);
return result;
}还有我救了它。
var imageCodecInfo = ImageCodecInfo.GetImageEncoders().First(encoder => encoder.MimeType == "image/png");
var encoderInfo = new EncoderParameters() { Param = { [0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L) } };
image.SetResolution(203, 203);
image.Save("img.png", imageCodecInfo, encoderInfo);这里最大的挑战是,我得到的图像实际上看起来很好,所有的事情都考虑到了。
但是当我把它打印出来的时候,它看起来很像像素。
在保存最终结果之前,我真的想给出一些提示,说明我应该应用于所有这些位图的设置,以及我保存的最终图像应该应用什么设置。
我绝不是一个.NET图形专家,所以所有的帮助都非常感谢。
发布于 2018-03-27 13:08:03
40毫米是1.5748英寸。因此,如果您计划以300 dpi分辨率打印它,则位图应为1.5748*300 = 472像素,而不是152个像素。
https://stackoverflow.com/questions/49506497
复制相似问题