Вкратце, я пытаюсь распечатать сгенерированный код с использованием библиотеки Zen и «Xprinter XP-235B», все кажется и работает хорошо, кроме принтера, так как он печатает сгенерированный штрих-код неправильно: -
Сначала он пропускает 2 этикетки и печатает на третьей.
иногда печатаю его не полностью, плюс, выравнивание не по центру.
и это код, который я использую
private void txt_BarcodeGenerator_Click(object sender, EventArgs e)
{
if (txt_BarcodeGenerator.Text == "")
{
MessageBox.Show("قم بصنع باركود جديد بالضغط انتر ف حقل الباركود", "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else
{
Zen.Barcode.Code128BarcodeDraw barcode = Zen.Barcode.BarcodeDrawFactory.Code128WithChecksum;
var barcodeImage = barcode.Draw(txt_BarcodeGenerator.Text, 50);
var resultImage = new Bitmap(barcodeImage.Width, barcodeImage.Height + 20); // 20 is bottom padding, adjust to your text
using (var graphics = Graphics.FromImage(resultImage))
using (var font = new Font("Consolas", 10))
using (var brush = new SolidBrush(Color.Black))
using (var format = new StringFormat()
{
Alignment = StringAlignment.Center, // Also, horizontally centered text, as in your example of the expected output
LineAlignment = StringAlignment.Far
})
{
graphics.Clear(Color.White);
graphics.DrawImage(barcodeImage, 0, 0);
graphics.DrawString(txt_BarcodeGenerator.Text, font, brush, resultImage.Width / 2, resultImage.Height, format);
}
pictureBox1.Image = resultImage;
txt_BarcodeGenerator.Clear();
txt_BarcodeGenerator.Focus();
}
}
private void btn_PrintBarcode_Click(object sender, EventArgs e)
{
((Form)printPreviewDialog1).WindowState = FormWindowState.Maximized;
PrintDialog myPrinDialog1 = new PrintDialog();
if (myPrinDialog1.ShowDialog() == DialogResult.OK)
{
printDocument1.Print();
}
}
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
//e.Graphics.DrawImage(, 0, 0);
//Bitmap bm = new Bitmap(pictureBox1.Width, pictureBox1.Height);
//pictureBox1.DrawToBitmap(bm, new Rectangle(0, 0, pictureBox1.Width, pictureBox1.Height));
//e.Graphics.DrawImage(bm, 0, 0);
e.Graphics.DrawImage(pictureBox1.Image, 0, 0);
}