c# 多个屏幕截屏 组合成一张完整的截屏
时间: 2023-08-11 19:30:12 浏览: 69
要将多个屏幕的截屏组合成一张完整的截屏,可以使用 System.Drawing 命名空间中的 Graphics 类来实现。下面是一个示例代码,可以实现将多个屏幕的截屏拼接成一张完整的截屏:
```csharp
using System;
using System.Drawing;
using System.Windows.Forms;
class MultipleScreenShot
{
static void Main(string[] args)
{
// 获取所有屏幕的数量
int screenCount = Screen.AllScreens.Length;
// 计算所有屏幕的总宽度和高度
int totalWidth = 0;
int totalHeight = 0;
for (int i = 0; i < screenCount; i++)
{
Screen screen = Screen.AllScreens[i];
totalWidth += screen.Bounds.Width;
totalHeight = Math.Max(totalHeight, screen.Bounds.Height);
}
// 创建一个与所有屏幕尺寸相同的图片对象
Bitmap bitmap = new Bitmap(totalWidth, totalHeight);
// 创建一个图形对象
Graphics graphics = Graphics.FromImage(bitmap);
// 计算当前屏幕的左上角坐标
int x = 0;
int y = 0;
// 将所有屏幕的内容绘制到图片对象上
for (int i = 0; i < screenCount; i++)
{
Screen screen = Screen.AllScreens[i];
graphics.CopyFromScreen(screen.Bounds.X, screen.Bounds.Y, x, y, screen.Bounds.Size);
x += screen.Bounds.Width;
}
// 保存图片
bitmap.Save("screenshot.png");
// 释放资源
graphics.Dispose();
bitmap.Dispose();
}
}
```
以上示例代码中,我们首先计算所有屏幕的总宽度和高度,然后创建一个与所有屏幕尺寸相同的图片对象。接着,我们使用一个 for 循环遍历所有的屏幕,逐个截取屏幕内容,并将其绘制到图片对象上。最后,保存图片并释放资源。