Capture la pantalla en un bitmap

Quiero capturar la pantalla en mi código para obtener una imagen, como usar el botón ‘imprimir pantalla’ en el teclado.

¿Alguien tiene una idea de cómo hacer esto? No tengo punto de partida

Si usa el framework .NET 2.0 (o posterior), puede usar el método CopyFromScreen() detallado aquí:

http://sofes.miximages.com/screenshot/ Save the screenshot to the specified path that the user has chosen. bmpScreenshot.Save(Screenshot.png”, ImageFormat.Png);

 // Use this version to capture the full extended desktop (ie multiple screens) Bitmap screenshot = new Bitmap(SystemInformation.VirtualScreen.Width, SystemInformation.VirtualScreen.Height, PixelFormat.Format32bppArgb); Graphics screenGraph = Graphics.FromImage(screenshot); screenGraph.CopyFromScreen(SystemInformation.VirtualScreen.X, SystemInformation.VirtualScreen.Y, 0, 0, SystemInformation.VirtualScreen.Size, CopyPixelOperation.SourceCopy); screenshot.Save("Screenshot.png", System.Drawing.Imaging.ImageFormat.Png); 
 Bitmap memoryImage; //Set full width, height for image memoryImage = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb); Size s = new Size(memoryImage.Width, memoryImage.Height); Graphics memoryGraphics = Graphics.FromImage(memoryImage); memoryGraphics.CopyFromScreen(0, 0, 0, 0, s); string str = ""; try { str = string.Format(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\Screenshot.png");//Set folder to save image } catch { }; memoryImage.save(str); 

Prueba este código

 Bitmap bmp = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height); Graphics gr = Graphics.FromImage(bmp); gr.CopyFromScreen(0, 0, 0, 0, bmp.Size); pictureBox1.Image = bmp; bmp.Save("img.png",System.Drawing.Imaging.ImageFormat.Png);