C# скриншот активного окна, но не закрывает окно

Я создаю приложение, в котором мне нужно создать файл PDF со скриншотом приложения.

Я нашел, как создать скриншот и как поместить его в мой файл. Все работает хорошо в большинстве ситуаций.

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

Кто-нибудь знает, что я делаю неправильно или я пропустил детали?

Вот код, который я сейчас использую:

// creates an rectangle of the size of the window
        Rectangle bounds = new Rectangle(
            (int)System.Windows.Application.Current.MainWindow.Left+10, 
            (int)System.Windows.Application.Current.MainWindow.Top+10, 
            (int)System.Windows.Application.Current.MainWindow.Width-20, 
            (int)System.Windows.Application.Current.MainWindow.Height-20);

        // creates a bitmap with a screenshot of the size of the window
        Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height);
        Graphics g = Graphics.FromImage(bitmap);
        g.CopyFromScreen(new System.Drawing.Point(bounds.Left, bounds.Top), new System.Drawing.Point(0,0), bounds.Size);

Заранее спасибо за любую помощь или примеры.

1 ответ

Я не совсем понимаю тебя. Я думаю, что вам нужно сделать, это захватить активное окно.

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

//for capturing current window use

 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("C://test.jpg", ImageFormat.Jpeg);
 }

Источник: снимок экрана активного окна?

Другие вопросы по тегам