Как вариант.
using System;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
internal bool IsCut = false;// Флаг.
internal Point startPoint;//стартовая точка выделения
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
IsCut = true;
}
private void panel1_MouseDown(object sender, MouseEventArgs e)
{
if(IsCut==true)
{
startPoint = Cursor.Position;//при нажатии кнопки мыши по panel запоминаем абсолютные координаты указателя мыши.
}
}
private void panel1_MouseUp(object sender, MouseEventArgs e)//события "отпускания" кнопки мыши
{
if(IsCut==true)
{
Size size = new Size(Math.Abs(startPoint.X - Cursor.Position.X), Math.Abs(startPoint.Y - Cursor.Position.Y));//вычисляем размер выделенной области
var bm = new Bitmap(size.Width, size.Height);// создаем bitmap заданного размера
Graphics graphics = Graphics.FromImage(bm as Image);
graphics.CopyFromScreen(startPoint, new Point(0, 0), bm.Size); //копируем часть изображения экрана в bitmap
pictureBox1.Image = bm; //выводим в picturebox
IsCut = false;// снимаем флаг необходимости выделения
}
}
}
}