Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Maux

Captura e Impressão de tela

Recommended Posts

Imagem Postada

 

 

O que posso fazer para corrigir isto?

Ja tentei colocar antes do método CaptureScreen() um Application.DoEvents() ou um this.Refresh()...

 

num adiantou

 

aguem me ajuda?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eita, faltou o começo do POST..

É o seguinte, tenho uma função que captura a tela, e gera uma impressão por um Print Document...

Porém quando eu mando capturar a imagem através de um método CaptureScreen() eu exibo um MessageBox, porém ele sai na impressão também. E a lógica está correta....

 

Olha o código:

 

[System.Runtime.InteropServices.DllImport("gdi32.dll")]
		public static extern long BitBlt(IntPtr hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, int dwRop);
		private Bitmap memoryImage;

private void CaptureScreen()
		{
			Graphics mygraphics = this.CreateGraphics();
			Size s = this.pictureBox1.BackgroundImage.Size;
			memoryImage = new Bitmap(s.Width, s.Height, mygraphics);
			Graphics memoryGraphics = Graphics.FromImage(memoryImage);
			IntPtr dc1 = mygraphics.GetHdc();
			IntPtr dc2 = memoryGraphics.GetHdc();
			BitBlt(dc2, 0, 0, this.ClientRectangle.Width, this.ClientRectangle.Height, dc1, 0, 0, 13369376);
			mygraphics.ReleaseHdc(dc1);
			memoryGraphics.ReleaseHdc(dc2);
		}

   private void button1_Click(object sender, EventArgs e)
		{
			try
			{
				if (MessageBox.Show(Owner, "Você deseja visualizar a impressão?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
				{
					PrintPreviewDialog printPreviewDialog1 = new PrintPreviewDialog(); // instantiate new print preview dialog
					printPreviewDialog1.Document = this.printDocument1;
					//printPreviewDialog1.= FormBorderStyle.Fixed3D;
					printPreviewDialog1.Width = Screen.PrimaryScreen.WorkingArea.Width;
					printPreviewDialog1.Height = Screen.PrimaryScreen.WorkingArea.Height;
					printPreviewDialog1.Top = 0;
					printPreviewDialog1.Left = 0;
					CaptureScreen();
					printPreviewDialog1.ShowDialog(); // Show the print preview dialog, uses print page event to draw preview screen
				}
				else
				{
					if (printDialog1.ShowDialog() == DialogResult.OK)
					{
						printDocument1.PrinterSettings = printDialog1.PrinterSettings;
						this.Refresh();
						Application.DoEvents();
						CaptureScreen();
						printDocument1.Print();
					}
				}
			}
			catch
			{

			}
		}

		private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
		{
			try
			{
				e.Graphics.DrawImage(memoryImage, 0, 0);
			}
			catch
			{

			}
		}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.