به شکل زیر مشکل را حل کردم. شاید شما راه حل بهتری داشته باشید
float w = PointToCartesian(pictureBox1.PointToClient(Cursor. Position)).X - _points[_points.Count - 1].X;
float h = PointToCartesian(pictureBox1.PointToClient(Cursor. Position)).Y - _points[_points.Count - 1].Y;
if ((w < 0) && (h < 0))
e.Graphics.DrawRectangle(pen, PointToCartesian(pictureBox1.PointToClient(Cursor. Position)).X, PointToCartesian(pictureBox1.PointToClient(Cursor. Position)).Y, Math.Abs(w), Math.Abs(h));
else if ((w > 0) && (h < 0))
e.Graphics.DrawRectangle(pen, (float)_points[_points.Count - 1].X, PointToCartesian(pictureBox1.PointToClient(Cursor. Position)).Y, Math.Abs(w), Math.Abs(h));
else if ((w < 0) && (h > 0))
e.Graphics.DrawRectangle(pen, PointToCartesian(pictureBox1.PointToClient(Cursor. Position)).X, (float)_points[_points.Count - 1].Y, Math.Abs(w), Math.Abs(h));
else
e.Graphics.DrawRectangle(pen, (float)_points[_points.Count - 1].X, (float)_points[_points.Count - 1].Y, w, h);