c#PictureBox的基本使用(画直线,矩形)

来源:互联网 发布:mac如何移动文件夹 编辑:程序博客网 时间:2024/04/28 01:04
  1.      下面的四个事件一定要绑定,不绑定任何效果都没有的   
  2.         private Point m_ptStart = new Point(0, 0);
  3.         private Point m_ptEnd = new Point(0, 0);
  4.         // true: MouseUp or false: MouseMove
  5.         private bool m_bMouseDown = false;
  6.         private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
  7.         {
  8.             if (e.Button != MouseButtons.Left)
  9.             {
  10.                 return;
  11.             }  
  12.             if (!m_bMouseDown)
  13.             {
  14.                 m_ptStart = new Point(e.X, e.Y);
  15.                 m_ptEnd = new Point(e.X, e.Y);
  16.             }
  17.             m_bMouseDown = !m_bMouseDown;
  18.         }
  19.         private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
  20.         {
  21.             if (e.Button != MouseButtons.Left)
  22.             {
  23.                 return;
  24.             }
  25.             if (m_ptStart.X >= 0 && m_ptEnd.X >= 0
  26.                  && m_ptStart.Y >= 0 && m_ptEnd.Y >= 0
  27.                  && m_ptStart.X <= 254 && m_ptEnd.X <= 254
  28.                  && m_ptStart.Y <= 163 && m_ptEnd.Y <= 163)
  29.             {
  30.                 m_ptEnd = new Point(e.X, e.Y);
  31.                 m_bMouseDown = !m_bMouseDown;
  32.                 this.pictureBox1.Refresh();
  33.             }
  34.             else
  35.             {
  36.                 m_ptEnd = m_ptStart;
  37.                 m_bMouseDown = !m_bMouseDown;
  38.                 this.pictureBox1.Refresh();
  39.             }
  40.         }
  41.         private void pictureBox1_Paint(object sender, PaintEventArgs e)
  42.         {
  43.             if (m_ptStart.Equals(m_ptEnd)) return;
  44.             e.Graphics.DrawLine(System.Drawing.Pens.Red, m_ptStart, m_ptEnd);
  45.            
  46.            //画矩形加上以下六行
  47.            //if (m_ptEnd.X - m_ptStart.X < 0 || m_ptEnd.Y - m_ptStart.Y < 0)
               // {
               //     return;
               //}
  48.            //e.Graphics.DrawRectangle(System.Drawing.Pens.Blue, m_ptStart.X, m_ptStart.Y, m_ptEnd.X - m_ptStart.X, m_ptEnd.Y - m_ptStart.Y);
  49.         }
  50.         private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
  51.         {
  52.             if (e.Button != MouseButtons.Left)
  53.             {
  54.                 return;
  55.             }
  56.             
  57.             m_ptEnd = new Point(e.X, e.Y);
  58.             this.pictureBox1.Refresh();
  59.         }

 

 

原创粉丝点击