C# скриншот окна

542
30 августа 2017, 13:33

Здравствуйте, недавно я задал вопрос. Но ответа на него так ине последовало, решил пойти по другому пути, сделать скриншот окна и от туда вырезать капчу и запихать ее в Bitmap.

Вопрос: как сделать скриншот только того окна которое я задам?

Answer 1

скриншот произвольной области экрана:

private void button1_Click(object sender, EventArgs e)
{
    // 100, 100 размер копируемой области
    Bitmap screen = new Bitmap(100, 100);
    using (Graphics g = Graphics.FromImage(screen))
    {
        // 5, 5 - координаты левого верхнего угла копируемой области
        g.CopyFromScreen(5, 5, 00, 0, screen.Size);
        pictureBox1.Image = screen;
    }
}
Answer 2

Уже нашел ответ, спасибо

Rectangle bounds = this.Bounds;
using (Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height))
{
    using (Graphics g = Graphics.FromImage(bitmap))
    {
       g.CopyFromScreen(new Point(bounds.Left, bounds.Top), Point.Empty, bounds.Size);
    }
    bitmap.Save("test.jpg", ImageFormat.Jpeg);
}

Вот функция для вырезки

public Bitmap Cut(Bitmap bmp, int x1, int y1, int x2, int y2)
{
    var img = bmp;
    int width = x2 - x1 + 1;
    int height = y2 - y1 + 1;
    var result = new Bitmap(width, height);
    for (int i = x1; i <= x2; i++)
        for (int j = y1; j <= y2; j++)
            result.SetPixel(i - x1, j - y1, img.GetPixel(i, j));
    return result;
}

Вот пример использования

Bitmap capthaImg = Cut(bitmap, 32, 279, 162, 329);
READ ALSO
Inline Keyboard Callback Button dynamic

Inline Keyboard Callback Button dynamic

Работаю с Telegrambot

720
Главный поток в Unity

Главный поток в Unity

Существует такой код (упрощенный):

367
Автозагрузка программы WPF не работает

Автозагрузка программы WPF не работает

Не работает функция автозагрузки программыСтрока добавляется в регистр, но после включения системы не запускается

422
Простой хук клавиатуры

Простой хук клавиатуры

Находила только сложные решения, может кто подскажет самое простое:

683