我做了一个测试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);
}
之前是否有人遇到过这个问题,或者知道如何修复它?
答案 0 :(得分:1)
首先,Region
实现了IDisposable
,所以你应该将它包装在using语句中,或者在完成后调用Dispose。
除此之外,我们还需要查看GetRegionByHWnd
和CaptureImage
的代码。你真的甚至需要那些代码吗?为什么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
此致