直接从标签打印机打印GroupBox

时间:2018-07-03 14:03:44

标签: c# winforms printing

我必须创建一个带有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要容易得多。

0 个答案:

没有答案