public static Bitmap capture <T>(this T control)
     where T : Control
 {
     return((Bitmap)control.invokeOnThread(
                () => {
         var cropper = new API_Cropper();
         return cropper.capture(control);
     }));
 }
 public static Bitmap capture <T>(this T control, int x, int y, int width, int height)
     where T : Control
 {
     return((Bitmap)control.invokeOnThread(
                () => {
         var cropper = new API_Cropper();
         return cropper.capture(x, y, width, height);
     }));
 }
 public static Bitmap capture <T>(this API_Cropper cropper, T control)
     where T : Control
 {
     return((Bitmap)control.invokeOnThread(
                () => {
         var location = control.PointToScreen(Point.Empty);
         return cropper.capture(location.X, location.Y, control.Width, control.Height);
     }));
 }