C#屏幕截屏示例

用 C#写的屏幕截屏工具,还是挺方便的,尤其是用在 Windows 桌面程序里。你只需要几个 API 调用,就能把整个屏幕捕获下来,保存成图片,响应也快,代码也不复杂。

System.Drawing是关键命名空间,BitmapGraphicsScreen这几个类配合用,基本就搞定了。你要截主屏幕还是多屏幕,都有现成的方法支持。

比如你想知道有几个显示器、每个多大,就用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的文档和社区资源还挺多,查起来方便。

zip
CaptureDemo.zip 预估大小:25个文件
folder
CaptureDemo 文件夹
file
CaptureDemo.v11.suo 28KB
file
CaptureDemo.sln 923B
folder
CaptureSoft 文件夹
file
Form1.Designer.cs 4KB
file
Form1.cs 2KB
folder
obj 文件夹
folder
Debug 文件夹
file
CaptureSoft.csproj.FileListAbsolute.txt 527B
file
CaptureSoft.Properties.Resources.resources 180B
file
DesignTimeResolveAssemblyReferencesInput.cache 7KB
file
CaptureSoft.Form1.resources 180B
file
CaptureSoft.exe 15KB
folder
TempPE 文件夹
file
CaptureSoft.pdb 30KB
file
CaptureSoft.csproj.GenerateResource.Cache 975B
file
DesignTimeResolveAssemblyReferences.cache 863B
file
CaptureSoft.csproj 4KB
folder
bin 文件夹
folder
Debug 文件夹
file
CaptureSoft.vshost.exe 22KB
file
CaptureSoft.exe 15KB
file
CaptureSoft.vshost.exe.manifest 490B
file
CaptureSoft.pdb 30KB
folder
Properties 文件夹
file
Resources.Designer.cs 3KB
file
Settings.Designer.cs 1KB
file
Settings.settings 249B
file
AssemblyInfo.cs 1KB
file
Resources.resx 5KB
file
Program.cs 492B
file
Form1.resx 6KB
file
API.cs 9KB
zip 文件大小:60.8KB