1

PictureBoxのリストがあります。次のコードは、単一のPictureBoxで機能します。用紙サイズに関係なく、各PictureBox(または画像)を新しいページに印刷するにはどうすればよいですか?ありがとう !

private void btnPrint_Click(object sender, EventArgs e)
{
   PrintDocument doc = new PrintDocument();
   doc.PrintPage += Doc_PrintPage;
   PrintDialog dlgSettings = new PrintDialog();

   dlgSettings.Document = doc;

   if (dlgSettings.ShowDialog() == DialogResult.OK)
   {
       doc.Print();
   }
}

private void Doc_PrintPage(object sender, PrintPageEventArgs e)
{
   float x = e.MarginBounds.Left;
   float y = e.MarginBounds.Top;
   Bitmap bmp = new Bitmap(picBox1.Width, picBox1.Height);

   //THIS IS OKAY FOR A SINGLE PICTURE BOX. 
   picBox1.DrawToBitmap(bmp, 
            new Rectangle(0, 0, picBox1.Width, 
            picBox1.Height));

   e.Graphics.DrawImage((Image)bmp, x, y);
}
4

1 に答える 1

3

画像インデックスを追跡してみてください。

int bmpIndex = 0;
List<Bitmap> bmps = new List<Bitmap>();

void pd_BeginPrint(object sender, PrintEventArgs e) {
  bmpIndex = 0;
}

void pd_PrintPage(object sender, PrintPageEventArgs e) {
  e.Graphics.DrawImage(bmps[bmpIndex], new Point(e.MarginBounds.Left, 
                                                 e.MarginBounds.Top));

  ++bmpIndex;
  if (bmpIndex < bmps.Count) {
    e.HasMorePages = true;
  }
}
于 2012-12-12T16:28:58.817 に答える