以下是一个使用C#在WinForms应用程序中实现屏幕截图并保存到文件的基本示例。这段代码演示了如何创建一个简单的WinForms应用程序,其中包含一个按钮,用于触发屏幕截图操作,并将截图保存为PNG文件。
首先,你需要在Visual Studio中创建一个新的WinForms项目。然后,在Form上添加一个Button控件,并为它添加一个点击事件处理器。
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Windows.Forms;
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
// 假设你已经在设计视图中添加了名为"btnCaptureScreen"的Button
// 你可以在这里或者在设计视图中为按钮添加点击事件
btnCaptureScreen.Click += BtnCaptureScreen_Click;
}
private void BtnCaptureScreen_Click(object sender, EventArgs e)
{
// 创建一个与屏幕大小相同的Bitmap对象
Bitmap bitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
// 使用Graphics对象从屏幕捕获图像
using (Graphics g = Graphics.FromImage(bitmap))
{
g.CopyFromScreen(Screen.PrimaryScreen.Bounds.X,
Screen.PrimaryScreen.Bounds.Y,
0, 0,
bitmap.Size,
CopyPixelOperation.SourceCopy);
}
// 保存Bitmap到PNG文件
bitmap.Save("screenshot.png", ImageFormat.Png);
// 可选:显示消息框以通知用户截图已保存
MessageBox.Show("截图已保存到screenshot.png");
// 清理资源
bitmap.Dispose();
}
}
在这个示例中,`btnCaptureScreen`是假设的Button控件的名称。你需要将其替换为你实际项目中Button控件的名称。
请注意,这个示例只捕获了主屏幕的截图。如果你的应用程序需要在多显示器环境下工作,并且你需要捕获所有屏幕的截图,那么你需要对代码进行一些修改,以遍历`Screen.AllScreens`集合并分别捕获每个屏幕的截图。
此外,确保你的应用程序具有写入到指定路径的权限,否则`bitmap.Save`方法可能会抛出异常。在这个示例中,截图被保存到了应用程序的根目录下,文件名为`screenshot.png`。你可以根据需要更改文件路径和文件名。