ho realizzato questa funzione per fare uno screenshot di una parte dello schermo
codice:
private void Screenshot(string percorso, string nomeFile, int x1, int y1, int x2, int y2)
        {
            Rectangle rect = new Rectangle(x1, y1, x2 - x1, y2 - y1);
            Bitmap bmp = new Bitmap(rect.Width, rect.Height, PixelFormat.Format32bppArgb);
            Graphics g = Graphics.FromImage(bmp);
            g.CopyFromScreen(rect.Left, rect.Top, 0, 0, bmp.Size, CopyPixelOperation.SourceCopy);
            if (File.Exists(percorso + "/" + nomeFile + ".jpg")) File.Delete(percorso + "/" + nomeFile + ".jpg");
            while (true)
            {
                if (!File.Exists(percorso + "/" + nomeFile + ".jpg"))
                {
                    bmp.Save(percorso + "/" + nomeFile + ".jpg");
                    break;
                }
            }
            while (true)
            {
                if (File.Exists(percorso + "/" + nomeFile + ".jpg")) break;
            }
            bmp.Dispose();
        }
il problema e che vorrei aumentare la risoluzione di queste immagini come se avessi fatto lo screenshot di quel punto dello schermo avendo zoomato, perciò una buona qualità dell'immagine non sgranata nel caso i screen sono di piccole parti dello schermo...
grazie a tutti