Я бы попробовал такой подход:
Во-первых, сделайте MouseDown
переменную, в рамках формы
private void Picture_MouseDown(object sender, MouseEventArgs e)
{
//save it
startImage = ((PictureBox)sender).Image;
RecStartpoint = e.Location;
((PictureBox)sender).Invalidate();
}
во-вторых, сохраните текущее изображение в этой переменной на MouseUp
Rectangle
наконец, в конце MouseUp
события установите Rectangle
ширину и высоту в ноль и восстановите сохраненное исходное изображение
//snipped code
pictureBox_preview_photo.Refresh();
Bitmap sourceBitmap = new Bitmap(org_pic.ImageLocation);
Graphics g = pictureBox_preview_photo.CreateGraphics();
g.DrawImage(sourceBitmap, new Rectangle(0, 0, pictureBox_preview_photo.Width, pictureBox_preview_photo.Height), rectCropArea, GraphicsUnit.Pixel);
//make rectangle's widht and height 0 so that Paint event won't draw it
Rect.Width = Rect.Height = 0;
//restore image
this.Picture.Image = startImage;
Я не понял этого второго вопроса.