C#屏幕截屏示例
用 C#写的屏幕截屏工具,还是挺方便的,尤其是用在 Windows 桌面程序里。你只需要几个 API 调用,就能把整个屏幕捕获下来,保存成图片,响应也快,代码也不复杂。
System.Drawing是关键命名空间,Bitmap、Graphics和Screen这几个类配合用,基本就搞定了。你要截主屏幕还是多屏幕,都有现成的方法支持。
比如你想知道有几个显示器、每个多大,就用Screen.AllScreens
一遍一遍打印出来就好,代码也简单:
foreach (var screen in Screen.AllScreens) {
Console.WriteLine($"显示器{screen.DeviceName}: 左上角({screen.Bounds.Left}, {screen.Bounds.Top}),宽度{screen.Bounds.Width},高度{screen.Bounds.Height}");
}
接下来截图也挺顺的。新建个Bitmap
,用Graphics.CopyFromScreen
把画面复制进来就好。像这样:
Bitmap screenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
using (Graphics g = Graphics.FromImage(screenshot)) {
g.CopyFromScreen(0, 0, 0, 0, screenshot.Size);
}
保存也直观,直接screenshot.Save
,指定文件名和格式,像ImageFormat.Png
就可以了。
如果你想要完整的程序,这里有一份控制台示例,直接跑起来会在当前目录生成screenshot.png
:
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Windows.Forms;
namespace CaptureDemo {
class Program {
static void Main(string[] args) {
Bitmap screenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
using (Graphics g = Graphics.FromImage(screenshot)) {
g.CopyFromScreen(0, 0, 0, 0, screenshot.Size);
}
screenshot.Save("screenshot.png", ImageFormat.Png);
Console.WriteLine("截图已保存至 'screenshot.png'");
}
}
}
这玩意还挺适合用在你要做些小工具或者自动截图场景里,比如桌面助手、自动化测试、录屏前截图之类的。如果你打算加快捷键、区域选择这些功能,也可以继续扩展。System.Drawing的文档和社区资源还挺多,查起来方便。
评论区