通过C#编写一个简易的Windows截屏增强工具

一、前言

在本篇攻略中,我们将详细讲解如何使用C#编写一个简易的Windows截屏增强工具。该工具可以实现采集屏幕截图、标注图片、保存图片等功能,为用户提供更加便捷的截屏体验。

二、环境准备

在开始编写代码前,我们需要准备如下环境:
- Windows操作系统
- Visual Studio 2019开发环境
- .NET Framework 4.7.2运行库

三、代码实现

  1. 创建窗体

在Visual Studio中新建一个Windows窗体工程,并在窗体中添加一个PictureBox和一个Button控件,如下图所示:

private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.Button button1;

private void InitializeComponent()
{
    this.pictureBox1 = new System.Windows.Forms.PictureBox();
    this.button1 = new System.Windows.Forms.Button();
    ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
    this.SuspendLayout();
    // 
    // pictureBox1
    // 
    this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
    this.pictureBox1.Location = new System.Drawing.Point(12, 12);
    this.pictureBox1.Name = "pictureBox1";
    this.pictureBox1.Size = new System.Drawing.Size(500, 300);
    this.pictureBox1.TabIndex = 0;
    this.pictureBox1.TabStop = false;
    // 
    // button1
    // 
    this.button1.Location = new System.Drawing.Point(12, 318);
    this.button1.Name = "button1";
    this.button1.Size = new System.Drawing.Size(75, 23);
    this.button1.TabIndex = 1;
    this.button1.Text = "截屏";
    this.button1.UseVisualStyleBackColor = true;
    this.button1.Click += new System.EventHandler(this.button1_Click);
    // 
    // Form1
    // 
    this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
    this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    this.ClientSize = new System.Drawing.Size(528, 353);
    this.Controls.Add(this.button1);
    this.Controls.Add(this.pictureBox1);
    this.Name = "Form1";
    this.Text = "截屏增强工具";
    ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
    this.ResumeLayout(false);

}
  1. 实现截屏功能

在button1的Click事件中,我们可以实现截屏功能。

private void button1_Click(object sender, EventArgs e)
{
    // 隐藏窗口
    this.Hide();

    // 截屏
    Bitmap bitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
    Graphics graphics = Graphics.FromImage(bitmap);
    graphics.CopyFromScreen(0, 0, 0, 0, Screen.PrimaryScreen.Bounds.Size);

    // 显示截屏图片
    pictureBox1.Image = bitmap;

    // 显示窗口
    this.Show();
}
  1. 实现图片标注功能

在pictureBox1的MouseMove事件中,我们可以实现图片标注功能。我们在PictureBox中实现一个画笔,并通过鼠标在PictureBox中的移动,来实现画线、画点等操作。

private Point p1, p2;

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        if (p1.IsEmpty)
            p1 = e.Location;
        else
        {
            p2 = e.Location;
            using (Graphics g = Graphics.FromImage(pictureBox1.Image))
            {
                g.DrawLine(Pens.Red, p1, p2);
            }
            pictureBox1.Invalidate();
            p1 = p2;
        }
    }
    else
        p1 = Point.Empty;
}
  1. 实现图片保存功能

在button1的Click事件中,我们可以实现图片保存功能。首先判断pictureBox1.Image是否为null,如果是,则提示用户进行截屏操作;如果不是,则弹出SaveFileDialog,让用户选择保存文件的位置和文件名。用户选择保存后,将pictureBox1.Image保存至指定位置。

private void button1_Click(object sender, EventArgs e)
{
    if (pictureBox1.Image == null)
    {
        MessageBox.Show("请先进行截屏操作");
        return;
    }

    SaveFileDialog dialog = new SaveFileDialog();
    dialog.Filter = "图片文件|*.png";

    if (dialog.ShowDialog() == DialogResult.OK)
    {
        pictureBox1.Image.Save(dialog.FileName);
        MessageBox.Show("保存成功");
    }
}

四、示例演示

  1. 实现截屏功能

点击“截屏”按钮,可以进行截屏操作。截屏后,截屏图片会显示在窗体中的PictureBox中。

  1. 实现图片标注功能

在截屏图片中,移动鼠标并按下鼠标左键不放,可以在截屏图片上画线。如下图所示:

  1. 实现保存功能

点击“保存”按钮,弹出保存对话框,用户选择保存的文件位置和文件名后,点击“保存”按钮即可将截屏图片保存至指定位置。如下图所示:

五、总结

通过以上演示,我们完成了一个简易的Windows截屏增强工具。在实现过程中,我们学习了如何采集屏幕截图、标注图片、保存图片等功能。这对于提高工作效率和便捷使用Windows操作系统,具有重要的意义。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:通过C#编写一个简易的Windows截屏增强工具 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • jQuery ajax仿Google自动提示SearchSuggess功能示例

    下面我将为你讲解“jQuery ajax仿Google自动提示SearchSuggess功能示例”的完整攻略。 简介 在网页中,我们经常需要使用搜索框来搜索一些内容,但是当我们输入关键词时,往往会出现一些自动提示,比如Google搜索框中的SearchSuggess功能。这种功能可以帮助我们更快地找到自己需要的信息,提高了搜索效率。本文将讲述如何使用jQue…

    C# 2023年5月31日
    00
  • C#中加载dll并调用其函数的实现方法

    C#中加载dll并调用其函数的实现方法,一般可以通过以下步骤来完成。 引用DLL文件 在Visual Studio中,可以通过在项目中添加现有项的方式来引用DLL文件。在添加时,需要确保所添加的DLL文件与项目的目标平台以及.NET Framework版本一致。可以通过鼠标右键单击项目,选择“属性”,打开项目属性对话框,然后在其中进行设置。 导入DLL中的函…

    C# 2023年5月15日
    00
  • C#实现简单屏幕监控的方法

    当我们需要监控并获取系统正在运行的一些信息时,屏幕监控便是一种非常有效的手段。在C#语言中,我们可以通过System.Windows.Forms这个库来实现简单的屏幕监控。 获取屏幕上的图像数据 第一步是获取屏幕上的图像数据。我们可以使用Screen类来获取当前屏幕的宽、高等参数,然后通过Graphics类的CopyFromScreen方法将屏幕上的图像数据…

    C# 2023年6月6日
    00
  • oledb连接access数据库示例

    当我们想要连接Access数据库时,可以使用OLEDB数据提供程序来实现。下面我们来看如何使用OLEDB连接Access数据库。 步骤一:添加命名空间 首先需要添加以下命名空间:System.Data.OleDb。 步骤二:创建连接 使用OleDbConnection类创建数据库连接。 string connectionString = @"Pro…

    C# 2023年6月2日
    00
  • C# Path.GetFullPath()方法: 获取指定路径的完整路径

    Path.GetFullPath() 方法的作用是将一个相对路径转换为完整的绝对路径,同时解析出该路径中的特殊字符和符号链接。 Path.GetFullPath() 方法有两个重载形式: public static string GetFullPath(string path); public static string GetFullPath(string…

    C# 2023年4月19日
    00
  • C# File.WriteAllText – 将字符串写入文件

    File.WriteAllText 方法的作用是将指定字符串写入指定文件中,如果该文件已经存在则覆盖原有内容。该方法属于System.IO命名空间的成员方法,可直接调用。 使用方法: File.WriteAllText(string path, string contents); 其中path参数表示文件路径,相对路径或绝对路径均可;contents参数表示…

    C# 2023年4月19日
    00
  • Visual studio 2017如何发布dotnet core到docker

    在本攻略中,我们将详细讲解如何使用Visual Studio 2017将.NET Core应用程序发布到Docker,并提供两个示例说明。 步骤一:安装Docker for Windows 在使用Visual Studio 2017将.NET Core应用程序发布到Docker之前,您需要安装Docker for Windows。您可以从Docker官网下载…

    C# 2023年5月17日
    00
  • WCF如何使用动态代理精简代码架构

    下面是关于“WCF如何使用动态代理精简代码架构”的完整攻略,包含两个示例。 1. 什么是WCF WCF(Windows Communication Foundation)是一种用于构建分布式应用程序的框架。它提供了一种统一的编程模型,可以使用不同的传输协议和编码方式来实现跨平台的通信。WCF支持多种传输协议包括HTTP、TCP、MSMQ等,可以在不同的网络环…

    C# 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部