В конструкторе формы (после вызова InitializeComponent ();) добавьте:
monitor.MouseMove += new MouseEventHandler(monitor_MouseMove);
monitor.MouseLeave += new EventHandler(monitor_MouseLeave);
monitor.MouseClick += new MouseEventHandler(monitor_MouseClick);
Теперь добавьте в свой класс Form следующее:
const int adjustX = -50;
const int adjustY = -50;
public Size boxSize = new Size(100, 100);
public int lastX = 2 * adjustX;
public int lastY = 2 * adjustY;
private void monitor_MouseMove(object sender, MouseEventArgs e) {
if (e.X != lastX || e.Y != lastY) {
Graphics g = monitor.CreateGraphics();
g.CopyFromScreen(monitor.PointToScreen(new Point(lastX + adjustX, lastY + adjustY)), new Point(lastX + adjustX, lastY + adjustY), boxSize, CopyPixelOperation.DestinationInvert);
lastX = e.X;
lastY = e.Y;
g.CopyFromScreen(monitor.PointToScreen(new Point(e.X + adjustX, e.Y + adjustY)), new Point(e.X + adjustX, e.Y + adjustY), boxSize, CopyPixelOperation.DestinationInvert);
}
}
void monitor_MouseLeave(object sender, EventArgs e) {
Graphics g = monitor.CreateGraphics();
g.CopyFromScreen(monitor.PointToScreen(new Point(lastX + adjustX, lastY + adjustY)), new Point(lastX + adjustX, lastY + adjustY), boxSize, CopyPixelOperation.DestinationInvert);
lastX = 2 * adjustX;
lastY = 2 * adjustY;
}
Наконец, в вашем обработчике щелчка мыши:
void monitor_MouseClick(object sender, MouseEventArgs e) {
}
Вам нужно будет добавить все, что вы хотите сделать с выбранной областью. Вы можете скопировать его в другое графическое окно, сохранить как растровое изображение, что угодно.