Maux 0 Denunciar post Postado Junho 28, 2009 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
Maux 0 Denunciar post Postado Junho 28, 2009 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