zoukankan      html  css  js  c++  java
  • 鼠标画出矩形

      public partial class ImageLoader : Form
        {

            private Point startPoint, endPoint;
            bool mark = false;
            Graphics bitG;
            Bitmap bits;
            public ImageLoader()
            {
                InitializeComponent();
                picBox1.Dock = DockStyle.Fill;
                bits = new Bitmap(picBox1.Width, picBox1.Height);
                bitG = Graphics.FromImage(bits);
                bitG.Clear(Color.White);
                picBox1.Image = bits;

                picBox1.MouseDown += new MouseEventHandler(picBox1_MouseDown);
                picBox1.MouseMove += new MouseEventHandler(picBox1_MouseMove);
                picBox1.MouseUp += new MouseEventHandler(picBox1_MouseUp);    
            }

            public Rectangle MakeRectangle(Point p1, Point p2)
            {
                int top, left, bottom, right;
                top = p1.X <= p2.X ? p1.X : p2.X;
                left = p1.Y <= p2.Y ? p1.Y : p2.Y;
                bottom = p1.X > p2.X ? p1.X : p2.X;
                right = p1.Y > p2.Y ? p1.Y : p2.Y;
                return (new Rectangle(top, left, bottom - top, right - left));
            }

            private void picBox1_MouseUp(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Left)
                {
                    Pen pen1 = new Pen(Color.Black, 1);
                    endPoint = e.Location;
                    Rectangle ret1 = MakeRectangle(startPoint, endPoint);
                    bitG.DrawRectangle(pen1, ret1);
                    picBox1.Image = bits;
                    mark = false;
                }
            }

            private void picBox1_MouseDown(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Left)
                {
                    mark = true;
                    startPoint = e.Location;
                    endPoint = e.Location;
                }
               
            }

            private void picBox1_MouseMove(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Left && mark)
                {
                    Rectangle ret = MakeRectangle(startPoint, endPoint);
                    ret.Width += 2;
                    ret.Height += 2;
                    picBox1.Invalidate(ret);
                    picBox1.Update();
                    Graphics g = picBox1.CreateGraphics();
                    Pen pen = new Pen(Color.Black, 1);
                    endPoint = e.Location;
                    ret = MakeRectangle(startPoint, endPoint);
                    g.DrawRectangle(pen, ret);
                }
            }

            private void picBox1_Paint(object sender, PaintEventArgs e)
            {
               

            }

         
        }

  • 相关阅读:
    Apache Ant 1.9.1 版发布
    Apache Subversion 1.8.0rc2 发布
    GNU Gatekeeper 3.3 发布,网关守护管理
    Jekyll 1.0 发布,Ruby 的静态网站生成器
    R语言 3.0.1 源码已经提交到 Github
    SymmetricDS 3.4.0 发布,数据同步和复制
    beego 0.6.0 版本发布,Go 应用框架
    Doxygen 1.8.4 发布,文档生成工具
    SunshineCRM 20130518发布,附带更新说明
    Semplice Linux 4 发布,轻量级发行版
  • 原文地址:https://www.cnblogs.com/lmcblog/p/2596413.html
Copyright © 2011-2022 走看看