• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
智美手机APP
国内最专业的智能手机APP应用解决方案提供商。智美手机APP为您提供成熟稳定的专业化产品、产品定制等服务。
博客园    首页    新随笔    联系   管理    订阅  订阅

鼠标画出矩形

  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)
        {
           

        }

     
    }

posted @ 2012-07-17 21:27  小敏博客园  阅读(400)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3