C #: как сделать скриншот части экрана - PullRequest
18 голосов
/ 22 июля 2010

как

TakeScreenshot(new Rectangle(0,0,100,100), "output.jpg");

Ответы [ 4 ]

28 голосов
/ 22 июля 2010

Используйте следующее:

        Rectangle rect = new Rectangle(0, 0, 100, 100);
        Bitmap bmp = new Bitmap(rect.Width, rect.Height, PixelFormat.Format32bppArgb);
        Graphics g = Graphics.FromImage(bmp);
        g.CopyFromScreen(rect.Left, rect.Top, 0, 0, bmp.Size, CopyPixelOperation.SourceCopy);
        bmp.Save(fileName, ImageFormat.Jpeg);
11 голосов
/ 22 июля 2010

Вот код для захвата экрана. Измените значения на нужный вам размер.

 Bitmap printscreen = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);  

 Graphics graphics = Graphics.FromImage(printscreen as Image);  

 graphics.CopyFromScreen(0, 0, 0, 0, printscreen.Size);  

 printscreen.Save(@"C:\printscreen.jpg", ImageFormat.Jpeg);

Или создайте метод, который вернет вам захваченное изображение следующим образом:

Image CaptureScreen(int sourceX, int sourceY, int destX, int destY, 
            Size regionSize)
{
    Bitmap bmp = new Bitmap(regionSize.Width, regionSize.Height);
    Graphics g = Graphics.FromImage(bmp);
    g.CopyFromScreen(sourceX, sourceY, destX, destY, regionSize);
    return bmp;
}
 ......
 // call 
 Image image = CaptureScreen(sourceX, sourceY,  destX,  destY, regionSize);
 image.Save(@"C:\Somewhere\screen.jpg);
2 голосов
/ 22 июля 2010

Используйте метод Graphics.CopyFromScreen.Google включает этот учебник .

1 голос
/ 22 июля 2010

Вы проверяли метод Graphics.CopyFromScreen ?

...