Here are a few C# methods to take screenshots of controls, or windows forms:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace ICanHasCode
{
public static class ScreenshotHelper
{
///
/// returns null on error, or screenshot full path & filename on success
///
///
///
public static string SaveScreenShot()
{
Bitmap bmpScreenshot;
Graphics gfxScreenshot;
bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb);
gfxScreenshot = Graphics.FromImage(bmpScreenshot);
gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
string fileName = System.Environment.GetFolderPath(Environment.SpecialFolder.InternetCache) + @"\" + Guid.NewGuid() + ".jpg";
bmpScreenshot.Save(fileName, ImageFormat.Jpeg);
return fileName;
}
public static string SaveScreenShot(System.Windows.Forms.Form form)
{
Bitmap bmpScreenshot;
Graphics gfxScreenshot;
form.BringToFront();
form.Refresh();
Application.DoEvents();
bmpScreenshot = new Bitmap(form.Bounds.Width, form.Bounds.Height, PixelFormat.Format32bppArgb);
gfxScreenshot = Graphics.FromImage(bmpScreenshot);
gfxScreenshot.CopyFromScreen(form.Bounds.X, form.Bounds.Y, 0, 0, form.Bounds.Size, CopyPixelOperation.SourceCopy);
string fileName = System.Environment.GetFolderPath(Environment.SpecialFolder.InternetCache) + @"\" + Guid.NewGuid() + ".jpg";
bmpScreenshot.Save(fileName, ImageFormat.Jpeg);
form.SendToBack();
return fileName;
}
public static string SaveScreenShot(System.Windows.Forms.Control control)
{
Bitmap bmpScreenshot;
Graphics gfxScreenshot;
control.BringToFront();
control.Refresh();
Application.DoEvents();
bmpScreenshot = new Bitmap(control.Bounds.Width, control.Bounds.Height, PixelFormat.Format32bppArgb);
gfxScreenshot = Graphics.FromImage(bmpScreenshot);
gfxScreenshot.CopyFromScreen(control.Bounds.X, control.Bounds.Y, 0, 0, control.Bounds.Size, CopyPixelOperation.SourceCopy);
string fileName = System.Environment.GetFolderPath(Environment.SpecialFolder.InternetCache) + @"\" + Guid.NewGuid() + ".jpg";
bmpScreenshot.Save(fileName, ImageFormat.Jpeg);
return fileName;
}
}
}