views:

65

answers:

1

Is there a good library I can use in c# to take a screenshot/snapshot?

One where I can drag and drop a region of my screen, to take a screenshot/snapshot of it?

+5  A: 

I'm not aware of any libraries that allow you to visually select a region on your screen, but a screenshot of your whole screen can be taken using the Graphics.CopyFromScreen method as follows:

var bounds = Screen.PrimaryScreen.Bounds;
using (var bmp = new Bitmap(bounds.Width,
                            bounds.Height,
                            PixelFormat.Format32bppArgb))
using (var gfx = Graphics.FromImage(bmp))
{
    gfx.CopyFromScreen(bounds.X,
                       bounds.Y,
                       0,
                       0,
                       bounds.Size,
                       CopyPixelOperation.SourceCopy);
    bmp.Save("shot.png");
}
Nathan Baulch
Use the code above then throw up a borderless, top-most form with that full screen capture you just made. Allow the user to draw their area on the form. Then translate the coordinates they specify into a cropping of the full image.
Aydsman