Штрих-код не обнаружен через сканер штрих-кода после печати - PullRequest
0 голосов
/ 17 мая 2018

Я использую приведенный ниже код для печати штрих-кода, который генерируется в моих C # WinForms, но сканер штрих-кода не обнаруживает его, я безуспешно пытался использовать шрифт code 128 и code39, когда я печатаю с использованиемпрограммное обеспечение бармена, которое обнаруживает сгенерированный штрих-код, просто не может обнаружить мой

вот код

 private void txtPprice_TextChanged(object sender, EventArgs e)
        {
            string barcode = txtCode.Text;
            string price = txtPprice.Text;
            string pname = txtPname.Text;
            Bitmap bitm = new Bitmap(barcode.Length * 30, 90);

            using (Graphics graphic = Graphics.FromImage(bitm))
            {


                Font newfont = new Font("IDAutomationHC39M", 10);
                Font newfont2 = new Font("Arial Black", 8);
                PointF point = new PointF(10f, 10f);
                SolidBrush black = new SolidBrush(Color.Black);
                SolidBrush white = new SolidBrush(Color.White);
                graphic.FillRectangle(white, 0, 0, bitm.Width, bitm.Height);
                graphic.DrawString("*" + barcode + "*", newfont, black, point);
                PointF pointPrice = new PointF(45f, 55f);
                graphic.DrawString("" + pname +"", newfont2, black, pointPrice);
                PointF pointPname = new PointF(90f, 75f);
                graphic.DrawString("" + price + " L.E.", newfont2, black, pointPname);
                PointF pointBcode = new PointF(20f, 75f);
                graphic.DrawString("" + barcode + "", newfont2, black, pointBcode);

            }

            using (MemoryStream Mmst = new MemoryStream())
            {


                bitm.Save("ms", ImageFormat.Jpeg);
                pictureBox1.Image = bitm;
                pictureBox1.Width = bitm.Width;
                pictureBox1.Height = bitm.Height;


            }  
        }

Я попытался добавить и удалить *, как предложено в других сообщениях, также изменилсяразмер шрифта от 8p пошел один за другим до 28px, но все равно не повезло, что сканер и принтер работают нормально в приложении бармена

Код, используемый в приведенном ниже примере: 5094411

Здесьявляется изображением, текстовое поле, выделенное красным цветом, содержит строку штрихового кода

, и вы можете видеть на изображении, что в графическом окне отображается 5094411 как шрифтом IDautomationHC39M (шрифт штрих-кода), так и снова под нимв ариале

enter image description here

1 Ответ

0 голосов
/ 18 мая 2018

Это правильный код, который после некоторых попыток с помощью Jimi, я смог получить эту часть правильно

string Barcode = "*"+txtCode.Text+"*";
            string price = txtPprice.Text;
            string pname = txtPname.Text;

            using (Bitmap bitmap = new Bitmap(350, 220))
            {
                bitmap.SetResolution(240, 240);
                using (Graphics graphics = Graphics.FromImage(bitmap))
                {
                    Font font = new Font("IDAutomationHC39M", 10, FontStyle.Regular, GraphicsUnit.Point);

                    graphics.Clear(Color.White);
                    StringFormat stringformat = new StringFormat(StringFormatFlags.NoWrap);
                    graphics.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
                    graphics.TextContrast = 10;
                    SolidBrush black = new SolidBrush(Color.Black);
                    SolidBrush white = new SolidBrush(Color.White);
                    PointF TextPosition = new PointF(45F, 10F);
                    SizeF TextSize = graphics.MeasureString(Barcode, font, TextPosition, stringformat);
                    PointF pointPrice = new PointF(90f, 125f);
                    Font newfont2 = new Font("Cambria", 8, FontStyle.Regular, GraphicsUnit.Point);
                    Font newfont3 = new Font("Arial Black", 10, FontStyle.Regular, GraphicsUnit.Point);
                    graphics.DrawString("" + pname + "", newfont3, black, pointPrice);
                    PointF pointPname = new PointF(200f, 170f);
                    graphics.DrawString("" + price + " L.E.", newfont3, black, pointPname);
                    PointF pointBcode = new PointF(35f, 170f);
                    graphics.DrawString("" + Barcode + "", newfont2, black, pointBcode);
                    if (TextSize.Width > bitmap.Width)
                    {
                        float ScaleFactor = (bitmap.Width - (TextPosition.X / 2)) / TextSize.Width;
                        graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
                        graphics.ScaleTransform(ScaleFactor, ScaleFactor);
                    }

                    graphics.DrawString(Barcode, font, new SolidBrush(Color.Black), TextPosition, StringFormat.GenericTypographic);

                    bitmap.Save(@"barcode.png", ImageFormat.Png);
                    this.pictureBox1.Image = (Bitmap)bitmap.Clone();
                    font.Dispose();
                }
            } 
...