C#图像处理

来源:互联网 发布:强氧科技淘宝 编辑:程序博客网 时间:2024/06/07 02:24

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using S10806Class;
using System.IO;

namespace GetImage
{
    public partial class GetScreenImgForm : Form
    {
         /// 图像操作类
         ImageWork imageWork = new ImageWork();
        /// 保存截取到的桌面图像
        Image screenImg = null;
         /// 保存用户截取的图像区域
        Rectangle imgRect = new Rectangle();
        /// 窗体的GDI
       Graphics g = null;
       /// 区域边框画笔
       Pen pen = new Pen(Color.Black, 1);
        /// 是否应该绘制区域
      bool isDraw = false;
        /// 用户是否选择了区域
         bool isOption = false;

       public GetScreenImgForm()
        {
            InitializeComponent();
     //获取当前桌面截图
            screenImg = imageWork.GetScreenImage();
            g = this.CreateGraphics();
        }
        private void GetScreenImgForm_Load(object sender, EventArgs e)
        {
            this.Size = new Size(screenImg.Width, screenImg.Height);
            this.BackgroundImage = screenImg;
        }
        private void GetScreenImgForm_MouseUp(object sender, MouseEventArgs e)
        {
            //没有截图并且单击右键 - 关闭本窗体
            if (e.Button == MouseButtons.Right && !this.isOption)
            {
                this.Close();
            }
            //截图了并且单击右键 - 取消此次截图
            else if (e.Button == MouseButtons.Right && this.isOption)
            {
                g.DrawImage(screenImg, new Point(0, 0));
                this.isOption = false;
                return;
            }
            //在截图情况下松开左键,选择区域结束,等待双击截取
            else if (e.Button == MouseButtons.Left && this.isOption && this.isDraw)
            {
                this.isDraw = false;
                imgRect.Width = e.X - imgRect.X;   //区域长度
                imgRect.Height = e.Y - imgRect.Y;  //区域高度
            }
        }
        private void GetScreenImgForm_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button != MouseButtons.Left) return;
            if (this.isOption) return;
            imgRect.X = e.X;   //起始X轴
            imgRect.Y = e.Y;   //起始Y轴
            this.isDraw = true;//允许绘图
        }
        private void GetScreenImgForm_MouseMove(object sender, MouseEventArgs e)
        {
            if (isDraw)
            {
                //刷新图像
                g.DrawImage(screenImg, new Point(0, 0));
                this.isOption = true;
                Point p1 = new Point(imgRect.X, imgRect.Y);
                Point p2 = new Point(e.X, imgRect.Y);
                Point p3 = new Point(imgRect.X, e.Y);
                Point p4 = new Point(e.X, e.Y);
                //画四条边框
                g.DrawLine(pen, p1, p2);
                g.DrawLine(pen, p2, p4);
                g.DrawLine(pen, p4, p3);
                g.DrawLine(pen, p3, p1);
            }
            else
            {
                //确定用户的选择区域
                int top = imgRect.Y;
                int down = imgRect.Y + imgRect.Height;
                int left = imgRect.X;
                int right = imgRect.X + imgRect.Width;
                //鼠标在选择区域中会变个模样
                if (e.X > left && e.X < right && e.Y > top && e.Y < down)
                {
                    this.Cursor = Cursors.SizeAll;
                }
                else
                {
                    this.Cursor = Cursors.Cross;
                }
            }
        }

        private void GetScreenImgForm_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            try
            {
                //用户双击选择区域时.....
                if (this.Cursor == Cursors.SizeAll)
                {
                    Bitmap b = new Bitmap(this.screenImg);
                    Bitmap img = b.Clone(this.imgRect, System.Drawing.Imaging.PixelFormat.DontCare);
                    SaveFileDialog dlg = new SaveFileDialog();
                    dlg.Filter = "(*.jpg)|*.jpg";
                    if (dlg.ShowDialog() != DialogResult.OK) return;
                    img.Save(dlg.FileName);
                    this.Close();
                }
            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message);
            }
        }

    }
}

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 玖瑰花叶子黄怎么办 羊偷吃腥油和花生饼吃多了怎么办 肉牛眼睛有点变黄少吃东西怎么办 黑坑草鱼不开口怎么办 花生和瓜子受潮皮了怎么办? 菜叶上长了腻虫怎么办 磨辊耐磨层脱落怎么办 磨辊耐磨层小块脱落怎么办 密封胶皮圈松了怎么办 汽筒里胶皮垫密封不严怎么办 磁耦气缸脱磁了怎么办 无杆气缸行程大怎么办 c4d中模型变成线怎么办 内径槽异性需要车一刀怎么办 轴承太紧影响转速怎么办 电动车前轮蝶刹抱死怎么办 摩托三轮车油刹抱死怎么办 手动档汽车离合抱死怎么办 别克gl8后轮吃胎怎么办 扭力梁后轮吃胎怎么办 非独立悬挂吃胎怎么办 货车半轴法兰盘裂纹怎么办 小天才平板裂屏了怎么办 新车撞了个坑怎么办 新车碰了个坑怎么办 汽车顶被砸了个坑怎么办 途观l前减震异响怎么办 锦明8代声音太大怎么办 手机网页无法加载插件怎么办 微信公众号被投诉怎么办 住了酒店的尾房怎么办 喜欢前任的闺蜜怎么办 闺蜜给介绍对象怎么办 喜欢对象的发小怎么办 山东省直医保卡丢失怎么办 高铁票如果错过了怎么办 动车错过了时间怎么办 长途动车错过了怎么办 动车如果错过了怎么办 没有取票错过了怎么办 动车出站没检票怎么办