C#提供了System.Drawing命名空间中的类,可以很方便地实现屏幕截图功能,以下是示例代码:' ]% m8 h. I2 M7 N7 u8 X
- using System;
- using System.Drawing;
- using System.Windows.Forms;
-
- namespace ScreenShotExample
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
-
-
- private void btnScreenshot_Click(object sender, EventArgs e)
- {
- // 获取屏幕大小
- Rectangle bounds = Screen.GetBounds(Point.Empty);
-
-
- // 创建一个bitmap对象并将其设置为屏幕大小
- using (Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height))
- {
- // 创建一个Graphics对象并将其设置为bitmap
- using (Graphics g = Graphics.FromImage(bitmap))
- {
- // 将整个屏幕绘制到Graphics对象中
- g.CopyFromScreen(Point.Empty, Point.Empty, bounds.Size);
- }
-
-
- // 将截图保存为jpg文件
- bitmap.Save("screenshot.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
- }
-
-
- MessageBox.Show("屏幕截图已保存");
- }
- }
- }
在上面的代码中,我们首先使用Screen.GetBounds方法获取当前屏幕的大小。然后,创建一个Bitmap对象,并将其大小设置为屏幕大小。接着,我们创建一个Graphics对象,并将其设置为Bitmap。最后,使用Graphics.CopyFromScreen方法将整个屏幕绘制到Graphics对象中。最后保存为jpg文件。
, o( ~2 ]8 s& n% L8 m这个示例只保存了一张屏幕截图。如果需要截取窗口或指定区域,可以使用GetWindowRect或GetDesktopWindow方法获取窗口的矩形区域,或使用一些计算方法获取指定矩形的截图。
$ o5 h k$ k0 Z* |需要注意的是,保存的截图可能会很大,因此最好使用压缩算法将其保存为较小的文件。另外,由于使用了System.Drawing命名空间,因此需要添加对System.Drawing.dll的引用。 |