项目中需要实现自动截取屏幕,网络上找了好久,发现好可以达到效果的程序,太复杂。代码少的程序,截屏时的效果并不太理想。综合网上的程序,略做改动,记录如下。
实现思路:
1.新建一个form窗体,FormStyle为None,初始化时最大化,作为截屏的画布。
2.实现按键监听事件,响应ESC退出
3.实现Mouse Down、Up、Move事件,实现截取退出截屏等操作。
下面直接上代码,关键部分,看注释。代码上传时,有改动,未调试,可能有问题,主要是记录实现思路。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Test_Screen_Capture
{
public partial class ScreenCapture : Form
{
public ScreenCapture()
{
InitializeComponent();
}
private Image _back { get; set; }
private bool _downed { get; set; }
private Image _image { get; set; }
public Image selected_image { get; set; }
public Rectangle rect { get; set; }
private Point _down_point { get; set; }
private SolidBrush _mask { get; set; }
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Graphics org = e.Graphics; //画出选择区域
org.DrawImage(_image, rect, rect, GraphicsUnit.Pixel);
Graphics g = e.Graphics;
g.SmoothingMode = System.Drawing.Drawing2D.Smoothin