воскресенье, 22 июля 2012 г.

C# Делаем скриншот всего экрана

Как всегда, выложу исходник готовой функции и описание как ей пользоваться.

Функция, которая делает нам скрин и возвращает результат в виде изображения (экземпляр класса Bitmap).

        private Bitmap TakeScreenShot(Screen currentScreen)
        {
            Bitmap bmpScreenShot = new Bitmap(currentScreen.Bounds.Width,
                                              currentScreen.Bounds.Height,
                                              System.Drawing.Imaging.PixelFormat.Format32bppArgb);

            Graphics gScreenShot = Graphics.FromImage(bmpScreenShot);

            gScreenShot.CopyFromScreen(currentScreen.Bounds.X,
                                       currentScreen.Bounds.Y,
                                       0, 0,
                                       currentScreen.Bounds.Size,
                                       CopyPixelOperation.SourceCopy);
            return bmpScreenShot;
        }

Пример использования функции:

        private Bitmap bmp;
        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            //это действие задаёт параметр расположения 
            //изображения в pictureBox1
            pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;

            //Делаем снимок экрана (изображение в памяти)
            Image pr = TakeScreenShot(Screen.PrimaryScreen);

            //Создание экземпляра класса Bitmap, в котом  
            //будет короткое время храниться наше изображение
            bmp = new Bitmap(pr);

            //Впихиваем изображение в pictureBox1
            pictureBox1.Image = bmp;
        }
Также выложу в качестве примера исходник, который ещё и умеет сохранять сделанный скрин:

ScreenShot.rar   53.3 KB

2 коммент.:

Роман Подкорытов комментирует...

Хороший пример

Unknown комментирует...

private void button2_Click(object sender, EventArgs e)
{
//это действие задаёт параметр расположения
//изображения в pictureBox1
pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;

//Делаем снимок экрана (изображение в памяти)


//Создание экземпляра класса Bitmap, в котом
//будет короткое время храниться наше изображение


//Впихиваем изображение в pictureBox1
pictureBox1.Image = TakeScreenShot(Screen.PrimaryScreen);
}

Можно скоратить метод, не создавая лишних экземпляров класса, что с экономит время выполнения работы программы и оперативную память вашей машины.

Отправить комментарий

TROCKII БЛОГ Copyright © 2012 | Template created by Lev Trockii |