private void SelectArea() { if (!CurrentArea.IsEmpty && !surface.Config.IsFixedSize) { ResizeManager.Show(); } }
public void Update() { if (IsMoving) { Rectangle rect = CurrentArea; rect.X += InputManager.MouseVelocity.X; rect.Y += InputManager.MouseVelocity.Y; CurrentArea = rect; } if (IsCreating && !CurrentArea.IsEmpty) { currentPosition = InputManager.MousePosition0Based; Point newPosition = currentPosition; if (proportionalResizing) { newPosition = CaptureHelpers.ProportionalPosition(positionOnClick, currentPosition); } CurrentArea = CaptureHelpers.CreateRectangle(positionOnClick, newPosition); } CheckHover(); ResizeManager.Update(); }
public AreaManager(RectangleRegion surface) { this.surface = surface; ResizeManager = new ResizeManager(surface, this); MinimumSize = 10; Areas = new List <Rectangle>(); SelectedAreaIndex = -1; surface.MouseDown += surface_MouseDown; surface.MouseUp += surface_MouseUp; surface.KeyDown += surface_KeyDown; surface.KeyUp += surface_KeyUp; }
public AreaManager(RectangleRegion surface) { this.surface = surface; ResizeManager = new ResizeManager(surface, this); MinimumSize = 10; Areas = new List<Rectangle>(); SelectedAreaIndex = -1; surface.MouseDown += surface_MouseDown; surface.MouseUp += surface_MouseUp; surface.KeyDown += surface_KeyDown; surface.KeyUp += surface_KeyUp; }
private void surface_MouseDown(object sender, MouseEventArgs e) { int areaIndex = AreaIntersect(InputManager.MousePosition0Based); if (e.Button == MouseButtons.Left && !ResizeManager.IsCursorOnNode()) { positionOnClick = InputManager.MousePosition0Based; if (areaIndex > -1) // Select area { IsMoving = true; SelectedAreaIndex = areaIndex; SelectArea(); } else if (!IsCreating) // Create new area { DeselectArea(); Rectangle rect; if (surface.Config.IsFixedSize) { IsMoving = true; rect = new Rectangle(new Point(e.X - surface.Config.FixedSize.Width / 2, e.Y - surface.Config.FixedSize.Height / 2), surface.Config.FixedSize); } else { IsCreating = true; rect = new Rectangle(e.Location, new Size(1, 1)); } Areas.Add(rect); SelectedAreaIndex = Areas.Count - 1; } } }
private void CheckHover() { CurrentHoverArea = Rectangle.Empty; if (!ResizeManager.IsCursorOnNode() && !IsCreating && !IsMoving && !IsResizing) { Rectangle hoverArea = GetAreaIntersectWithMouse(); if (!hoverArea.IsEmpty) { CurrentHoverArea = hoverArea; } else if (WindowCaptureMode && Windows != null) { hoverArea = Windows.FirstOrDefault(x => x.Contains(InputManager.MousePosition)); if (!hoverArea.IsEmpty) { hoverArea = CaptureHelpers.ScreenToClient(hoverArea); CurrentHoverArea = Rectangle.Intersect(surface.ScreenRectangle0Based, hoverArea); } } } }
private void DeselectArea() { SelectedAreaIndex = -1; ResizeManager.Hide(); }