从X和Y裁剪图像?

时间:2018-12-11 16:38:38

标签: c# exception screenshot rectangles

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);

在我的代码中,我目前正在截取一个我称为“ element”的Microsoft Office应用程序的屏幕快照,它将图像按其原意保存。不幸的是,如果我想从顶部或左侧裁剪图像,这不像创建矩形时用数字替换X和Y坐标那样容易。如果确实尝试使用一个值更改X或Y坐标,则会出现SystemOutOfMemory异常。但是,如果我想从宽度和高度上进行裁剪,然后尝试更改我可以的值。

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

任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

我通过在创建Rectangle时更改x,y,height和width值来解决此问题。如果您使用Rectangle创建的值大于您尝试捕获的元素,它将产生System.OutOfMemory异常。

但是,这在更改分辨率时会引起问题。当前正在尝试解决该问题。

编辑:为解决我遇到的第二个问题,我在测试运行之前和之后更改了系统的分辨率,以便可以在大多数系统上通用的分辨率下运行,然后将其恢复为原始状态。