将屏幕捕获到一个位图
我想在我的代码中捕捉屏幕来获取图像 – 就像使用键盘上的“打印屏幕”button。
有没有人有一个想法如何做到这一点? 我没有起点。
如果使用.NET 2.0(或更高版本)框架,则可以使用此处详述的CopyFromScreen()
方法:
http://www.geekpedia.com/tutorial181_Capturing-screenshots-using-Csharp.html
//Create a new bitmap. var bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb); // Create a graphics object from the bitmap. var gfxScreenshot = Graphics.FromImage(bmpScreenshot); // Take the screenshot from the upper left corner to the right bottom corner. gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy); // 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 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);
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);