DotNetCore在Windows中截取屏幕截图

4
我想使用.NET Core来捕获屏幕截图。我知道在.NET Framework中这很简单,但是在.NET Core中是否可能?我已经搜索了,但无法找到任何答案。

我认为Dot Net Core没有获取屏幕截图的方法。但是你可以从.NET Core应用程序中使用.NET Framework调用一个截图类库来进行截图。 - AndreasHassing
2个回答

19

System.Drawing.Common 现在在 .NET Core 中可用,使您能够截取窗口/桌面的屏幕截图。 这里是一个示例

编辑

一个捕获屏幕截图的例子:

using var bitmap = new Bitmap(1920, 1080);
using (var g = Graphics.FromImage(bitmap))
{
    g.CopyFromScreen(0, 0, 0, 0,
    bitmap.Size, CopyPixelOperation.SourceCopy);
}
bitmap.Save("filename.jpg", ImageFormat.Jpeg);

更新

System.Drawing.Common已在iOS和Linux上被弃用,但仍为Windows维护。请参见相关文章。


这个问题涉及到如何截屏,但是这个答案没有包括如何截屏。 - Greg Trevellick
1
我的错,抱歉,我应该仔细阅读它 - 但至少现在我知道了,希望能够使用这个答案。 - Greg Trevellick
它能工作,但不是我所希望的方式。我有两个屏幕,但只捕捉了一个屏幕。 - Aloti
@CHIRINGUCHI,你尝试过将Bitmap构造函数的值修改为分辨率的组合x值吗? - Tubs
1
@Tubs 在我的情况下,我的项目是一个库代码项目,我创建了一个Windows窗体项目,它运行正常。 - Aloti
显示剩余6条评论

4

.NET Core是一个跨平台的框架,这意味着它可以在各种平台上运行,甚至包括没有屏幕的平台(例如嵌入式Linux)。 因此,你不能直接从.NET Core库中实现它。 你可以在各自类型的库中实现特定于平台的截屏,如win、android、mac等,并通过依赖注入容器将其连接到你的跨平台代码的设施中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接