我输入了一个数字并生成了一个条形码。但是,我无法从打印机打印出我想要的尺寸。我如何调整标签的尺寸?我使用的是Godex G300型号打印机。
下面是我尝试的代码:
private void GenerateBarcodeButton_Click(object sender, EventArgs e)
{
if (!String.IsNullOrEmpty(textBox1.Text))
{
Zen.Barcode.Code128BarcodeDraw barcodeDraw = Zen.Barcode.BarcodeDrawFactory.Code128WithChecksum;
pictureBox1.Image = barcodeDraw.Draw(textBox1.Text, 50);
}
else
MessageBox.Show("Please enter the barcode number you want to generate.");
}
public void PrintPicture(object sender, PrintPageEventArgs e)
{
Bitmap bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);
pictureBox1.DrawToBitmap(bmp, new Rectangle(0, 0, pictureBox1.Width, pictureBox1.Height));
e.Graphics.DrawImage(bmp, 0, 0);
bmp.Dispose();
}
private void Print_Click(object sender, EventArgs e)
{
PrintDialog pd = new PrintDialog();
PrintDocument pDoc = new PrintDocument();
pDoc.PrintPage += PrintPicture;
pd.Document = pDoc;
if (pd.ShowDialog() == DialogResult.OK)
{
pDoc.Print();
}
}
1条答案
按热度按时间dz6r00yl1#
所以有几件事要考虑(没有简短的答案,我很抱歉):
首先(可选)设置打印机中纸张或标签的介质尺寸(也可在"打印机默认值"中设置):
然后,在渲染图像时,您需要指定要缩放和绘制的宽度和高度:
然而,我建议保持您的图像原始宽度,以避免模糊,这可能会影响您的条形码的质量,并可能导致它被拒绝,如果在商业环境中使用。
相反,一开始就创造一个更大的形象。
最后,您需要考虑打印机的DPI,即203 DPI
如果您尝试以203dpi打印96dpi图像,则图像中的某些像素将在打印机上跨越非整数数量的点。当发生这种情况时,标签打印机使用称为抖动的过程,该过程将向上/向下舍入部分像素或交替像素行以达到平均值。这将导致条形码的线条比它们应该的更窄/更宽,或线条具有锯齿状边缘。
要避免这种情况,请确保您的图像DPI与打印机的DPI匹配(或者您的打印机DPI可以完全除以您的图像DPI)
其他解决方案:
下面的代码对我来说是有效的(霍尼韦尔PM43c 203dpi)(注意GraphicsUnit.Pixel的使用)