C# 使用System.Drawing.Region

C# 使用System.Drawing.Region,c#,winforms,graphics,C#,Winforms,Graphics,我做了一个测试WindowForm应用程序,它根据窗口的边界对窗口进行快照。但我似乎无法满足GetBounds()的需要。他想要图形,但它已经包含边界,我只想要他的点和大小: private void CaptureBtn_Click(object sender, EventArgs e) { Region region = GetRegionByHWnd(GetForegroundWindow()); Rectangle rectangle = new Rectangle(

我做了一个测试
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);
}

以前有人遇到过这个问题,或者知道如何解决它吗?

首先,
Region
实现了
IDisposable
,因此您应该将它包装在using语句中,或者在处理完它后调用Dispose

除此之外,我们需要查看您的
GetRegionByHWnd
CaptureImage
代码。你真的需要这些代码吗?为什么
someWindow.Bounds
对您不起作用?

也许这有助于:

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

如果没有,请告知您希望获得的数据以及您收到的数据

还可以查看该类型,而不是矩形类型

这里有一些好文章:

问候

对于GetBind,您可以使用一些窗口 使用ClientRectangle属性,此 属性返回绑定形式,并且 dll(ScreenCaptureLib.dll)帮助您 用于桌面中的getImage


有趣的是,你有一个“someWindow.Bonds”的例子吗?我知道有桌面键,但没有一个窗口。我需要前台(活动)窗口,但这只会帮助您获得对System.Windows.Forms.Form的引用,而这看起来不像您正在做的。