2

我正在创建一个应用程序,我需要在其中创建一个带有应用程序屏幕截图的 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);

在此先感谢您提供任何帮助或示例。

4

1 回答 1

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);
 }

来源:捕获活动窗口的屏幕截图?

于 2013-07-28T19:17:33.003 回答