我必须创建一个带有code39条码和一些信息文本的标签。 我在GroupBox内创建标签,效果很好。标签创建完成后,我必须使用标签打印机(Meto SP40 II)打印此GroupBox(或至少其中的控件)。
要打印GroupBox,请将其绘制到位图,然后将位图另存为jpg并打印jpg。当我使用“普通”打印机打印jpg时,质量很好,并且可以毫无问题地扫描条形码。但是,当我使用标签打印机打印jpg时,质量真的很差,我无法扫描条形码。这是我用来创建和打印jpg的代码。
public void PrintBarcodeGrpb()
{
Bitmap bmp = new Bitmap(groupBox1.Width, groupBox1.Height);
groupBox1.DrawToBitmap(bmp,groupBox1.ClientRectangle);
bmp.Save(barcodeSavePath, ImageFormat.Jpeg);
PrintDocument doc = new PrintDocument();
doc.PrintPage += Doc_PrintPage;
doc.PrinterSettings.DefaultPageSettings.PaperSize = new PaperSize("Etiketten", 75, 40);
doc.Print();
doc.Dispose();
}
private void Doc_PrintPage(object sender, PrintPageEventArgs e)
{
Image img = Image.FromFile(barcodeSavePath);
Point loc = new Point(0,0);
e.Graphics.DrawImage(img, loc);
}
我猜发生质量问题,因为打印机的jpg有问题。但是,即使我直接打印位图而不将其另存为jpg,其质量也一样。有没有一种方法可以打印GroupBox而不将其绘制到位图上?
编辑
当我以这种方式创建和打印标签时:
e.Graphics.DrawString(BarcodeLocation, textFont, Brushes.Black, 33,29);
e.Graphics.DrawString(BarcodeText, barcodeFont, Brushes.Black, 15, 58);
e.Graphics.DrawString(BarcodeText, textFont, Brushes.Black, 35, 97);
e.Graphics.DrawString(lblKST.Text, textFont, Brushes.Black, 233, 29);
e.Graphics.DrawString(lblKTR.Text, textFont, Brushes.Black, 233, 97);
e.Graphics.DrawString(CostCentre, textFont, Brushes.Black, 233, 120);
e.Graphics.DrawString(CostTypes, textFont, Brushes.Black, 33, 120);
打印标签的质量很好。在一切准备就绪之前,需要进行大量的测试和打印,但是对我而言,尝试打印整个GroupBox要容易得多。