private void MirrorDriver_DesktopChange(object sender, DesktopMirror.DesktopChangeEventArgs e) { var rectangle = new Rectangle(e.Region.x1, e.Region.y1, e.Region.x2 - e.Region.x1, e.Region.y2 - e.Region.y1); DesktopChanges.Add(rectangle); }
/// <summary> /// Combines intersecting rectangles to reduce redundant sends. /// </summary> /// <returns></returns> public IList<Rectangle> GetOptimizedRectangleRegions() { var desktopChangesCopy = new List<Rectangle>(DesktopChanges); DesktopChanges.Clear(); desktopChangesCopy.ForEach((x) => desktopChangesCopy.ForEach((y) => { if (x != y && x.Contains(y)) { desktopChangesCopy.Remove(y); } })); return desktopChangesCopy; }