从 X 和 Y 裁剪图像?

Crop image from X and Y?

var ssbytearray = ((ITakesScreenshot)excelSession).GetScreenshot().AsByteArray;
var screenshot = new Bitmap(new MemoryStream(ssbytearray));
var croppedScreenshot = new Rectangle(element.Location.X, element.Location.Y, element.Size.Width, element.Size.Height);
screenshot = screenshot.Clone(croppedScreenshot, screenshot.PixelFormat);

SaveScreenShot(saveLocation, screenshot);

在我的代码中,我目前正在截取我调用的 Microsoft Office 应用程序的屏幕截图,"element" 并将图像按原样保存。不幸的是,如果我想从顶部或左侧裁剪图像,创建矩形时并不像用数字替换 X 和 Y 坐标那么容易。如果我尝试用一​​个值更改 X 或 Y 坐标,我会得到一个 SystemOutOfMemory 异常。但是,如果我想从宽度和高度裁剪它并尝试更改我能够更改的值。

我希望能够裁剪从顶部和左侧截取的屏幕截图。目前我只能使用宽度和高度从底部或右侧裁剪屏幕截图。

感谢您的帮助。

我通过在创建矩形时更改 x、y、高度和宽度值解决了这个问题。如果您创建 Rectangle 的值大于您尝试捕获的元素,它将产生 System.OutOfMemory 异常。

然而,这会在更改分辨率时引起问题。目前正在尝试解决该问题。

编辑:为了解决我遇到的第二个问题,我在测试之前和之后更改了系统的分辨率 运行s 以便它可以 运行 在大多数系统上常见的分辨率, 然后将其改回原来的状态。