Я использую Zen Barcode Rendering Framework для создания штрих-кодов в приложении формы Windows C#. У меня есть два текстовых поля (одно для самого штрих-кода и одно для соответствующего текста, который я хочу напечатать на этикетке со штрих-кодом). Точно так же я загружаю сгенерированное изображение штрих-кода в графический блок и пытаюсь его распечатать, но каждый раз, когда я нажимаю кнопку печати, результат неверный (иногда принтер печатает белую пустую этикетку, а иногда штрих-код печатается неполным. Интересно отметить, что для того, чтобы штрих-код появился на этикетке, даже если он выглядит неполным, мне приходится выбирать очень большие форматы бумаги). Вот мой код:
Код для события нажатия кнопки создания штрих-кода:
private void Button1_Click(отправитель объекта, EventArgs e) { строковый штрих-код = textBox1.Text; Zen.Barcode.Code128BarcodeDraw brcd = Zen.Barcode.BarcodeDrawFactory.Code128WithChecksum; вар barcodeImage = brcd.Draw (штрих-код, 50); интервал результатаImageWidth; if(barcodeImage.Width >= textBox2.Text.Length*8) { resultImageWidth = barcodeImage.Width; } еще { resultImageWidth = textBox2.Text.Length*8; } вар resultImage = новое растровое изображение (resultImageWidth, barcodeImage.Height + 60); // 20 – это отступы снизу, подстраивайтесь под свой текст используя (var Graphics = Graphics.FromImage(resultImage)) используя (var font = new Font("IranYekan", 10)) используя (var кисть = новый SolidBrush(Color.Black)) используя (var format = new StringFormat() { Alignment = StringAlignment.Center, // Кроме того, горизонтально центрированный текст, как в вашем примере ожидаемого результата LineAlignment = StringAlignment.Far }) { графика.Очистить(Цвет.Белый); Graphics.DrawImage(barcodeImage, (resultImageWidth - barcodeImage.Width)/2, 0); Graphics.DrawString(textBox1.Text, шрифт, кисть, resultImage.Width / 2, resultImage.Height-30, формат); Graphics.DrawString(textBox2.Text, шрифт, кисть, resultImage.Width / 2, resultImage.Height, формат); } PictureBox1.Image = resultImage; } Код события нажатия кнопки печати:
private void Button2_Click(отправитель объекта, EventArgs e) { PrintDialog pd = новый PrintDialog (); PrintDocument doc = новый PrintDocument(); doc.PrintPage += Doc_PrintPage; pd.Document = документ; если (pd.ShowDialog() == DialogResult.OK) { документ.Печать(); } } И моя функция Doc_PrintPage():
private void Doc_PrintPage (отправитель объекта, PrintPageEventArgs e) { Растровое изображение bm = новое растровое изображение(pictureBox1.Width, PictureBox1.Height); PictureBox1.DrawToBitmap(bm, new Rectangle(0, 0, PictureBox1.Width, PictureBox1.Height)); e.Graphics.DrawImage(bm, 0, 0); бм.Dispose(); } Моя главная цель — полностью распечатать штрих-код с соответствующим текстом внутри границ бумаги, который выбирается при появлении диалогового окна печати.
Вы можете просмотреть пользовательский интерфейс моего приложения на изображении ниже:

Вот мои распечатанные результаты: вы видите, что они некачественные, и изображение каждый раз не помещается правильно. Я использую Brother QL-700.



