【发布时间】:2018-12-11 16:38:37
【问题描述】:
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 应用程序的屏幕截图,并将图像按原样保存。不幸的是,如果我想从顶部或左侧裁剪图像,这并不像在创建矩形时用数字替换 X 和 Y 坐标那么容易。如果我尝试用某个值更改 X 或 Y 坐标,我会得到 SystemOutOfMemory 异常。但是,如果我想从宽度和高度裁剪它并尝试更改我能够更改的值。
我希望能够裁剪从顶部和左侧截取的屏幕截图。目前我只能使用宽度和高度从底部或右侧裁剪屏幕截图。
任何帮助表示赞赏。
【问题讨论】:
-
为什么不选择更好的元素呢?如果您选择一个元素然后必须裁剪,似乎会有一个更好的元素只包含您关心的项目。找到该元素并将其传递给您的屏幕截图功能...问题已解决。
-
我需要在 Excel 中截取加载项窗格以及单元格本身,因此为什么需要裁剪。如果有更好的方法我可以做到这一点,请随时详细说明。
标签: c# exception screenshot rectangles