public static ScreenModel LocalScreen() { var screenModel = new ScreenModel { Rectangle = Rectangle.Empty, ScreenBitmap = null }; // Capture a new screenshot. // NewBitmap = CaptureDesktop(); lock (NewBitmap) { if (NewBitmap == null) { return(null); } if (PrevBitmap != null) { screenModel.Rectangle = GetBoundingBoxForChanges(ref PrevBitmap, ref NewBitmap); if (screenModel.Rectangle != Rectangle.Empty) { // Get the minimum rectangular area // //diff = new Bitmap(bounds.Width, bounds.Height); screenModel.ScreenBitmap = NewBitmap.Clone(screenModel.Rectangle, NewBitmap.PixelFormat); PrevBitmap = NewBitmap; } } else { // Create a bounding rectangle. // screenModel.Rectangle = new Rectangle(0, 0, NewBitmap.Width, NewBitmap.Height); // Set the previous bitmap to the current to prepare // for the next screen capture. // screenModel.ScreenBitmap = NewBitmap.Clone(screenModel.Rectangle, NewBitmap.PixelFormat); PrevBitmap = NewBitmap; } } GC.Collect(); GC.WaitForPendingFinalizers(); return(screenModel); }
public static ScreenModel LocalScreen() { var screenModel = new ScreenModel { Rectangle = Rectangle.Empty, ScreenBitmap = null }; // Capture a new screenshot. // NewBitmap = CaptureDesktop(); lock (NewBitmap) { if (NewBitmap == null) { return null; } if (PrevBitmap != null) { screenModel.Rectangle = GetBoundingBoxForChanges(ref PrevBitmap, ref NewBitmap); if (screenModel.Rectangle != Rectangle.Empty) { // Get the minimum rectangular area // //diff = new Bitmap(bounds.Width, bounds.Height); screenModel.ScreenBitmap = NewBitmap.Clone(screenModel.Rectangle, NewBitmap.PixelFormat); PrevBitmap = NewBitmap; } } else { // Create a bounding rectangle. // screenModel.Rectangle = new Rectangle(0, 0, NewBitmap.Width, NewBitmap.Height); // Set the previous bitmap to the current to prepare // for the next screen capture. // screenModel.ScreenBitmap = NewBitmap.Clone(screenModel.Rectangle, NewBitmap.PixelFormat); PrevBitmap = NewBitmap; } } GC.Collect(); GC.WaitForPendingFinalizers(); return screenModel; }
public static ScreenModel LocalAgentScreen(Bitmap image) { var screenModel = new ScreenModel { Rectangle = Rectangle.Empty, ScreenBitmap = null }; NewBitmap = image; if (NewBitmap == null) { return screenModel; } lock (NewBitmap) { if (PrevBitmap != null) { screenModel.Rectangle = GetBoundingBoxForChanges(ref PrevBitmap, ref NewBitmap); if (screenModel.Rectangle != Rectangle.Empty) { // Get the minimum rectangular area // //diff = new Bitmap(bounds.Width, bounds.Height); screenModel.ScreenBitmap = NewBitmap.Clone(screenModel.Rectangle, NewBitmap.PixelFormat); PrevBitmap = NewBitmap; } } else { // Create a bounding rectangle. // screenModel.Rectangle = new Rectangle(0, 0, NewBitmap.Width, NewBitmap.Height); // Set the previous bitmap to the current to prepare // for the next screen capture. // screenModel.ScreenBitmap = NewBitmap.Clone(screenModel.Rectangle, NewBitmap.PixelFormat); PrevBitmap = NewBitmap; } } GC.Collect(); GC.WaitForFullGCComplete(); return screenModel; }