How to draw a rectangle in WinForm app in the correct location

Posted by TooFat on Stack Overflow See other posts from Stack Overflow or by TooFat
Published on 2010-03-25T15:42:06Z Indexed on 2010/03/25 15:53 UTC
Read the original article Hit count: 356

Filed under:
|

I have a WinForm app that has an image displayed in a PictureBox that has the added functionality of allowing a user to draw a rectangle on the image by clicking and dragging. The Location, Height and Width of the rectangle are saved to disk.

When the image is viewed again I would like to automatically redraw that rectangle in the same position on the image.

When I redraw it, however, the Height and Width are fine but the location is always off.

The location is being captured in the MouseDown Event like so

private void pbSample_MouseDown(object Sender, MouseEventArgs e)
    {
        if (SelectMode)
          {
             StartLocation.X = e.X;
             StartLocation.Y = e.Y;
             //later on these are saved as the location of the rectangle
          }     

    }

And I am redrawing it like so

public void DrawSelectedArea(Rectangle rect)
    {
      Graphics g = this.PictureBox1.CreateGraphics();
      Pen p = new Pen(Brushes.Black);
      g.DrawRectangle(p, rect);
    }

Given the location from the MouseEventArgs captured during the MouseDown Event how can I calculate the correct location to redraw my rectangle?

© Stack Overflow or respective owner

Related posts about winforms

Related posts about drawing