使用System.Drawing.Region

时间:2011-06-11 00:13:45

标签: c# winforms graphics

我做了一个测试WindowForm应用程序,它通过它的边界获取窗口的快照。但我似乎无法给GetBounds()它需要什么。他想要图形,但它已经包含了界限,我只想要他的观点和大小:

private void CaptureBtn_Click(object sender, EventArgs e)
{
    Region region = GetRegionByHWnd(GetForegroundWindow());

    Rectangle rectangle = new Rectangle(
                                        region.GetBounds().Location,
                                        region.GetBounds().Size);

    CaptureImage(rectangle.Location, Point.Empty, rectangle.Size);
}

之前是否有人遇到过这个问题,或者知道如何修复它?

3 个答案:

答案 0 :(得分:1)

首先,Region实现了IDisposable,所以你应该将它包装在using语句中,或者在完成后调用Dispose。

除此之外,我们还需要查看GetRegionByHWndCaptureImage的代码。你真的甚至需要那些代码吗?为什么someWindow.Bounds不适合你?

答案 1 :(得分:1)

  

对于getBound,你可以使用一些窗口   使用ClientRectangle属性,这个   property返回绑定表单和this   DLL(ScreenCaptureLib.dll)可以帮助你   对于桌面上的getImage。

http://www.codeproject.com/script/Articles/ViewDownloads.aspx?aid=19415

答案 2 :(得分:0)

也许这会有所帮助:RECTANGLE

我不知道你的方法如captureimage。但也许你需要控制的相对位置? Point to Client / Point to Screen

如果没有,请告诉您希望得到的数据和收到的数据。

另请参阅RECT MSDN类型而不是Rectangle类型。

这里有一些好文章:

http://www.codeguru.com/csharp/csharp/cs_graphics/screencaptures/article.php/c6139

http://cid-32fd2eb6551ddb56.office.live.com/self.aspx/.Public/CaptureWindow.rar?sa=170500830

http://winapi.freetechsecrets.com/win32/WIN32Capturing_an_Image.htm

此致