C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > C# Windows桌面截图

基于C#实现Windows桌面截图功能

作者:编程笔记in

在学习C# 的过程中,通过案例是比较高效的一种学习方式,下面我将介绍如何使用C#开发一个简单的Windows桌面截图程序,这个程序实现了基本的屏幕截图功能,感兴趣的小伙伴跟着小编一起来看看吧

前言

知识梳理

实现功能:

实现步骤:

运行效果

代码

主窗体代码

public partial class MainForm : Form
{
    public MainForm()
    {
        InitializeComponent();
        this.CenterToParent();
        this.MaximumSize = this.Size;
        this.MinimumSize = this.Size;
    }
    private void Btn_Screenshot_Click(object sender, EventArgs e)
    {
        this.Hide();
        Thread.Sleep(500);
        Screenshot();
    }
    /// 截图方法
    private void Screenshot()
    {
        try
        {
            // 获取屏幕尺寸
            Rectangle bounds = Screen.GetBounds(Point.Empty);
            // 创建位图对象
            using (Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height))
            {
                // 创建绘图对象
                using (Graphics g = Graphics.FromImage(bitmap))
                {
                    // 将屏幕内容复制到位图中
                    g.CopyFromScreen(Point.Empty, Point.Empty, bounds.Size);
                }
                this.Show();
                //显示图像
                FrmScreenshotEditor frmScreenshotEditor = new FrmScreenshotEditor();
                frmScreenshotEditor.Image = bitmap;
                frmScreenshotEditor.ShowDialog();
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show($"截图失败: {ex.Message}", "错误",MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
}

截图编辑窗体

public partial class FrmScreenshotEditor :WinFormBase
 {
     public Image Image
     {
         get => uvCanvas.Image;
         set
         {
             uvCanvas.Image = value;
             Invalidate();
         }
     }
     public FrmScreenshotEditor()
     {
         InitializeComponent();
         this.CenterToParent();
         this.WindowState = FormWindowState.Maximized;
     }
     private void btn_Save_Click(object sender, System.EventArgs e)
     {
         SaveFileDialog  saveFileDialog = new SaveFileDialog();
         saveFileDialog.FileName = "截图1";     //设置初始文件名
         saveFileDialog.Filter= "PNG Image|*.png|JPEG Image|*.jpg|BMP Image|*.bmp";
         if (saveFileDialog.ShowDialog()== DialogResult.OK)
         {
             string extension = Path.GetExtension(saveFileDialog.FileName).ToLower();
             ImageFormat imageFormat;
             switch (extension)
             {
                 case ".png":
                     imageFormat = ImageFormat.Png;
                     break;
                 case ".jpg":
                     imageFormat = ImageFormat.Jpeg;
                     break;
                 case ".bmp":
                     imageFormat = ImageFormat.Bmp;
                     break;
                 default:
                     imageFormat = ImageFormat.Png;
                     break;
             }
             try
             {
                 Image.Save(saveFileDialog.FileName, imageFormat);
                 MessageBox.Show($"图片已成功保存至: {saveFileDialog.FileName}");
             }
             catch (Exception ex)
             {
                 MessageBox.Show($"保存图片时出错: {ex.Message}");
             }
         }
     }
 }

总结

最后

以上就是基于C#实现Windows桌面截图功能的详细内容,更多关于C# Windows桌面截图的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文