Usuário com melhor resposta
Como imprimir duas imagens em duas páginas diferentes de uma vez?

Pergunta
-
Olá!
Consigo imprimir um panel (pnlPrint) através do código a seguir. Porém, não estou conseguindo imprimir um datagridview que já pertence ao mesmo Form junto, na seguda página para que os dois saiam na mesma impressão. Eu poderia fazer dois botões diferentes para imprimir os dois separados, mas preciso que os dois panels saiam na mesma impressão pois o usuário pode optar pela impressora PDF e assim gerar um arquivo de duas páginas.
void Imprimir() { PrintDocument pd = new PrintDocument(); pd.DocumentName = "Relatório SisIndice"; pd.PrintPage += new PrintPageEventHandler(doc_PrintPage); pd.DefaultPageSettings.Landscape = true; PrintDialog printDialog1 = new PrintDialog(); printDialog1.Document = pd; DialogResult result = printDialog1.ShowDialog(); if (result == DialogResult.OK) { pd.Print(); } } private void doc_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { Bitmap bmp = new Bitmap(pnlPrint.Width, pnlPrint.Height, pnlPrint.CreateGraphics()); pnlPrint.DrawToBitmap(bmp, new Rectangle(0, 0, pnlPrint.Width, pnlPrint.Height)); RectangleF bounds = e.PageSettings.PrintableArea; float factor = ((float)bmp.Height / (float)bmp.Width); e.Graphics.DrawImage(bmp, bounds.Left, bounds.Top, 1118, 855);
Bitmap bmp1 = new Bitmap(dgvDetGraf.Width, dgvDetGraf.Height, dgvDetGraf.CreateGraphics());
dgvDetGraf.DrawToBitmap(bmp1, new Rectangle(0, 0, dgvDetGraf.Width, dgvDetGraf.Height));
RectangleF bounds1 = e.PageSettings.PrintableArea;
e.Graphics.DrawImage(bmp1, bounds1.Left, bounds1.Top, 1118, 855);
e.HasMorePages = false;}
- Editado LD_7 quinta-feira, 16 de junho de 2016 18:02 atualização
Respostas
-
Bom dia LD_7,
Obrigado por sua participação no Fórum MSDN.
Você pode tentar aplicar o controle para impressão de DataGrid:
private void printGrid_Click(System.Object sender, System.EventArgs e) { printDocument1.Print(); } private void printDocument1_PrintPage(System.Object sender, System.Drawing.Printing.PrintPageEventArgs e) { PaintEventArgs myPaintArgs = new PaintEventArgs(e.Graphics, new Rectangle(new Point(0, 0), this.Size)); this.InvokePaint(dataGrid1, myPaintArgs); }
Mais informações aqui
Espero que esse exemplo o ajude.
Atenciosamente.
Robson William Silva
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
- Marcado como Resposta Thales F Quintas quinta-feira, 30 de junho de 2016 16:13
Todas as Respostas
-
-
Bom dia LD_7,
Obrigado por sua participação no Fórum MSDN.
Você pode tentar aplicar o controle para impressão de DataGrid:
private void printGrid_Click(System.Object sender, System.EventArgs e) { printDocument1.Print(); } private void printDocument1_PrintPage(System.Object sender, System.Drawing.Printing.PrintPageEventArgs e) { PaintEventArgs myPaintArgs = new PaintEventArgs(e.Graphics, new Rectangle(new Point(0, 0), this.Size)); this.InvokePaint(dataGrid1, myPaintArgs); }
Mais informações aqui
Espero que esse exemplo o ajude.
Atenciosamente.
Robson William Silva
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
- Marcado como Resposta Thales F Quintas quinta-feira, 30 de junho de 2016 16:13
-