2010-10-31 92 views
0

我正在尝试使用CopyFromScreen捕获屏幕截图。然而方法签名对我来说有点混乱。与CopyFromScreen签名相混淆

它看起来像这样:

public void CopyFromScreen(
    Point upperLeftSource, 
    Point upperLeftDestination, 
    Size blockRegionSize 
) 

为什么有3个参数,而不是2?为什么有两个upperLeftCorner。根据我的理解,您可以使用两个点(左上角和右下角)描述表面上的正方形区域。这可以描述任何大小和任何位置的区域。所以问题是:我如何使用这种方法来捕获一个区域表示为:(X0,Y0)(X1,Y1)????????????????????????????????????????

回答

2

upperLeftDestination是新图像中要放置复制图像的位置。

graphics.CopyFromScreen(new Point(0,0), new Point(0, 0), new Size(50, 50)); 

要从屏幕开始(100,100)复制50×50正方形:

graphics.CopyFromScreen(new Point(100, 100), new Point(0, 0), new Size(50, 50)); 

要从屏幕起始于屏幕的左上角复制50×50平方

要将屏幕左上角的50x50正方形复制到60x60图像中,并在所有边上均匀设置5px的边框:

graphics.CopyFromScreen(new Point(0, 0), new Point(5, 5), new Size(50, 50)); 
2

upperLeftDestination参数告诉它在图像的哪个位置绘制副本。
您可能希望那是0, 0

+0

假设您只是想将捕获的矩形保存到一个文件中以便以后查看? – 2010-10-31 15:51:50

+0

@GregS:然后你会创建一个'Bitmap'对象,使用'Graphics.FromImage',然后调用'Save'。 – SLaks 2010-10-31 15:56:48