解决C#全屏幕截图的实现方法 您所在的位置:网站首页 FULLSCREENFORM 解决C#全屏幕截图的实现方法

解决C#全屏幕截图的实现方法

2023-03-10 12:16| 来源: 网络整理| 查看: 265

Codepublic partial class FullScreenForm : Form {    private Rectangle rectSelected = Rectangle.Empty;    private bool isClipping = false;    private Bitmap screen;    private Bitmap coverLayer = null;    private Color coverColor;    private Brush rectBrush = null;    private Bitmap resultBmp = null;    public FullScreenForm(Bitmap screen) {        InitializeComponent();        int width = Screen.PrimaryScreen.Bounds.Width;        int height = Screen.PrimaryScreen.Bounds.Height;        coverLayer = new Bitmap(width, height);        coverColor = Color.FromArgb(50, 200, 0, 0);        rectBrush = new SolidBrush(coverColor);        using (Graphics g = Graphics.FromImage(coverLayer)) {            g.Clear(coverColor);        }        this.Bounds = new Rectangle(0, 0, width, height);        this.screen = screen;        this.DoubleBuffered = true;    }    protected override void OnMouseDown(MouseEventArgs e) {        if (e.Button == MouseButtons.Left) {            isClipping = true;            rectSelected.Location = e.Location;        }        else if (e.Button == MouseButtons.Right) {            this.DialogResult = DialogResult.OK;        }    }    protected override void OnMouseMove(MouseEventArgs e) {        if (e.Button == MouseButtons.Left && isClipping) {            rectSelected.Width = e.X - rectSelected.X;            rectSelected.Height = e.Y - rectSelected.Y;

            this.Invalidate();        }    }    protected override void OnMouseUp(MouseEventArgs e) {        if (e.Button == MouseButtons.Left && isClipping) {            rectSelected.Width = e.X - rectSelected.X;            rectSelected.Height = e.Y - rectSelected.Y;            this.Invalidate();            resultBmp = new Bitmap(rectSelected.Width, rectSelected.Height);            using (Graphics g = Graphics.FromImage(resultBmp)) {                g.DrawImage(screen,new Rectangle(0, 0, rectSelected.Width, rectSelected.Height), rectSelected, GraphicsUnit.Pixel);            }            this.DialogResult = DialogResult.OK;        }    }    protected override void OnPaint(PaintEventArgs e) {        Graphics g = e.Graphics;        g.DrawImage(screen, 0, 0);        g.DrawImage(coverLayer, 0, 0);        PaintRectangle();    }    protected override void OnPaintBackground(PaintEventArgs e) {

    }    protected override void OnKeyDown(KeyEventArgs e) {        if (e.KeyCode == Keys.Escape) {            this.DialogResult = DialogResult.Cancel;        }    }    private void PaintRectangle() {        using (Graphics g = Graphics.FromImage(coverLayer)) {            g.Clear(coverColor);            GraphicsPath path = new GraphicsPath();            path.AddRectangle(this.Bounds);            path.AddRectangle(rectSelected);            g.FillPath(rectBrush, path);            g.DrawRectangle(Pens.Blue, rectSelected);        }    }    public Bitmap ResultBitmap {        get { return resultBmp; }    }}



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有