Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
380 views
in Technique[技术] by (71.8m points)

printing - How to Add the values of List<string> into the List<PictureBox> after encoding it to Barcode in c#

I have two List one is of string and the other is of PictureBox type. I want to take the values of List of type string and the convert it into the Barcode then save it to the List of type PictureBox.

I am doing it like this right now:

List<System.Windows.Forms.PictureBox> PictureBoxList = new List<System.Windows.Forms.PictureBox>();
List<string> SerialNumberList = new List<string>();
int SerialNumberStart = 0;

for(int i = 0; i < 10 ; i++)
{
    SerialNumberStart++;
    SerialNumberList.Add("S" + SerialNumberStart);
}

private void PrintButton_Click(object sender, EventArgs e)
{
   for(int j =0 ; j < SerialNumberList.Count ; j++)
   {
    BarcodeLib.TYPE barcodetype1 = BarcodeLib.TYPE.CODE39;
    BarcodeLib.Barcode bar1 = new BarcodeLib.Barcode();
    bar1.IncludeLabel = true;
    PictureBoxList[j].Image = bar1.Encode(barcodetype1 ,SerialNumberList[j]); // It gives me exception of Index out of range
    PictureBoxList.Add(PictureBoxList[j]);
    printDocument1.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(printDocument1_PrintPage);
    printDocument1.Print();
   }
}

private void PrintDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
  Bitmap myBitmap1 = new Bitmap(pictureBox1.Width, pictureBox1.Height);
  pictureBox1.DrawToBitmap(myBitmap1, new Rectangle(0, 0, pictureBox1.Width, pictureBox1.Height));
  e.Graphics.DrawImage(myBitmap1, 0, 0);
  myBitmap1.Dispose();
}

My first question is that How can I convert the string into the PictureBox. And then converting each item of the PictureBox to the Bitmap and then printing all of the bitmaps now the code only Prints one barcode

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

enter image description here

you want like this.. right?? see this is the representaion of the this string "S1253551" in 3of9 and plain text and finally as image right??

    public Image stringToImage(string inputString)
    { 
        string text = inputString.Trim();

        Bitmap bmp = new Bitmap(1, 1);

        //Set the font style of output image
        Font font = new Font("Free 3 of 9", 25, FontStyle.Regular, GraphicsUnit.Pixel);
        Font font2 = new Font("Arial", 15, FontStyle.Regular, GraphicsUnit.Pixel);

        Graphics graphics = Graphics.FromImage(bmp);

        int width = (int)graphics.MeasureString(text, font).Width;
        int height = (int)graphics.MeasureString(text, font).Height;

        int height2 = (int)graphics.MeasureString(text, font2).Height;

        bmp = new Bitmap(bmp, new Size(width, height+height2));
        graphics = Graphics.FromImage(bmp);



        //Specify the background color of the image
        graphics.Clear(Color.Cyan);
        graphics.SmoothingMode = SmoothingMode.AntiAlias;
        graphics.TextRenderingHint = TextRenderingHint.AntiAlias;



        //Specify the text, font, Text Color, X position and Y position of the image
        graphics.DrawString(text, font, new SolidBrush(Color.Black), 0, 0);
        graphics.DrawString(text, font2, new SolidBrush(Color.Black), 0, height);

        graphics.Flush();
        graphics.Dispose();

        //if you want to save the image  uncomment the below line.
        //bmp.Save(@"d:myimage.jpg", ImageFormat.Jpeg);

        return bmp;
    }

Remember you must have installed "free 3 of 9" font.

you pass the string "S1253551" and it generate the barcode and add the plain text at bottom and finally return it as image.

Its working code i have tried at my end. Enjoy. :)

Download the working code from here Download


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...