title: Draw a User Defined Rectangle
body: <p>My current code allows me to draw rectangles from a user defined spot but not in the way in whihc i desire. I need it to be like you would do it in paint, here is my current code:</p>
  
  <p>namespace SimpleDraw2
  {
      /// 
      /// Description of MainForm.
      /// 
      public partial class MainForm : Form
      {
          bool IsMouseDown = false;
          Point MousePosition;
          int DrawShape = 0;
          Bitmap StoredImage;</p>
  
  <pre><code>    public MainForm()
      {
          //
          // The InitializeComponent() call is required for Windows Forms designer support.
          //
          InitializeComponent();
  
          //
          // TODO: Add constructor code after the InitializeComponent() call.
          //
          pictureBox1.Image = new Bitmap    (pictureBox1.Width,pictureBox1.Height);                      
          StoredImage =  new Bitmap(pictureBox1.Width,pictureBox1.Height);
      }
  
      void PictureBox1MouseDown(object sender, MouseEventArgs e)
      {
          IsMouseDown = true;
          MousePosition = e.Location;
          Graphics gStored = Graphics.FromImage(StoredImage);
          gStored.Clear(Color.Transparent);
          gStored.DrawImage(pictureBox1.Image, 0, 0);
      }
  
      void PictureBox1MouseUp(object sender, MouseEventArgs e)
      {
          IsMouseDown = false;
      }
  
      void PictureBox1MouseMove(object sender, MouseEventArgs e)
      {
          Graphics g = Graphics.FromImage(pictureBox1.Image);
          if (DrawShape == 0) 
          {
              Pen p = new Pen(Color.Red, 10);
              if (IsMouseDown) 
              {
                  g.DrawLine(p,MousePosition,e.Location);
                  MousePosition = e.Location;
              }
          }
          if (DrawShape == 1) 
          {
              g.Clear(Color.Transparent);
              g.DrawImage(StoredImage,0,0);
              g.DrawRectangle(Pens.Green,MousePosition.X,MousePosition.Y,e.X,e.Y);
  
          }
          if (DrawShape == 2)
          {
              g.Clear(Color.Transparent);
              g.DrawImage(StoredImage, 0, 0);
              g.DrawEllipse(Pens.HotPink, MousePosition.X, MousePosition.Y, e.X, e.Y);
          }
          if (DrawShape == 3)
          {
              g.Clear(Color.Transparent);
              g.DrawImage(StoredImage, 0, 0);
              g.DrawArc(Pens.Indigo,pictureBox1.Bounds, e.Y, e.X);
          }
          //if (DrawShape == 4)
          //{
          //    g.Clear(Color.Transparent);
          //    g.DrawImage(StoredImage, 0, 0);
          //    g.DrawPolygon(Pens.Indigo, Point[] e.X);
          //}
  
          this.Refresh();
      }
  
      private void button2_Click(object sender, EventArgs e)
      {
          OpenFileDialog ofd = new OpenFileDialog();
          if (ofd.ShowDialog() == DialogResult.OK)
          {
              axWindowsMediaPlayer1.URL = ofd.FileName;
          }
      }
  
      private void button1_Click(object sender, EventArgs e)
      {
          axWindowsMediaPlayer1.Ctlcontrols.pause();
          Bitmap bmp = new Bitmap(axWindowsMediaPlayer1.Width, axWindowsMediaPlayer1.Height);
          Graphics gfx = Graphics.FromImage(bmp);
          gfx.CopyFromScreen(PointToScreen(axWindowsMediaPlayer1.Location), new Point(0, 0), axWindowsMediaPlayer1.Bounds.Size, CopyPixelOperation.SourceCopy);
          pictureBox1.BackgroundImage = bmp;
          //axWindowsMediaPlayer1.Visible = false;
          //pictureBox1.Visible = true;
      }
  
      private void button3_Click(object sender, EventArgs e)
      {
          Graphics gg = Graphics.FromImage(pictureBox1.BackgroundImage);
          gg.Clear(Color.Transparent);
          Graphics gStored = Graphics.FromImage(StoredImage);
          gStored.Clear(Color.Transparent);
          Graphics g = Graphics.FromImage(pictureBox1.Image);
          g.Clear(Color.Transparent);
  
  
      }
  
      private void button4_Click(object sender, EventArgs e)
      {
          DrawShape = 1;
  
      }
  
      private void button6_Click(object sender, EventArgs e)
      {
          DrawShape = 2;
      }
  
      private void button8_Click(object sender, EventArgs e)
      {
         DrawShape = 3;
      }
  
      private void button7_Click(object sender, EventArgs e)
      {
          DrawShape = 0;
      }
  }
  </code></pre>
  
  <p>}</p>
  
  <p>If someone could help me edit my code to iron out the issue to make it easy drag and draw system it would me much appreciate.</p>
  
  <p>Thanks in Advance</p>
  
  <p>Chris</p>