public override void OnMouseDown(VisualGraph drawArea, MouseEventArgs e) { Point point = new Point(e.X, e.Y); selectMode = SelectionMode.None; int n = drawArea.ObjList.SelectionCount; for (int i = n - 1; i >= 0; i--) { DrawObject o = drawArea.ObjList.GetSelectedObject(i); int handleNumber = o.HitTest(point); if (handleNumber > 0) { selectMode = SelectionMode.Size; resizedObject = o; resizedObjectHandle = handleNumber; drawArea.ObjList.UnselectAll(); o.Selected = true; break; } } if (selectMode == SelectionMode.None) { int m = drawArea.ObjList.Count(); DrawObject o = null; for (int i = m - 1; i >= 0; i--) { if (drawArea.ObjList[i].HitTest(point) == 0) { o = drawArea.ObjList[i]; break; } } if (o != null) { selectMode = SelectionMode.Move; o.Selected = true; } } if (selectMode == SelectionMode.None) { selectMode = SelectionMode.NetSelection; drawArea.DrawNetRectangle = true; } lastPoint.X = point.X; lastPoint.Y = point.Y; startPoint.X = point.X; startPoint.Y = point.Y; drawArea.Capture = true; drawArea.NetRectangle = GetNormalizedRectangle(startPoint, lastPoint); drawArea.Refresh(); }
public override void OnMouseUp(VisualGraph drawArea, MouseEventArgs e) { Point point = new Point(e.X, e.Y); if (selectMode == SelectionMode.NetSelection) { drawArea.ObjList.SelectInRectangle(drawArea.NetRectangle); selectMode = SelectionMode.None; drawArea.DrawNetRectangle = false; } if (resizedObject != null) { resizedObject.Normalize(); resizedObject = null; } selectMode = SelectionMode.None; drawArea.Refresh(); }
public override void OnMouseMove(VisualGraph drawArea, MouseEventArgs e) { Point point = new Point(e.X, e.Y); if (e.Button == MouseButtons.None) { Cursor cursor = null; for (int i = drawArea.ObjList.Count() - 1; i >= 0; i--) { int n = drawArea.ObjList[i].HitTest(point); if (n > 0) { cursor = drawArea.ObjList[i].GetHandleCursor(n); break; } } if (cursor == null) { cursor = Cursors.Default; } drawArea.Cursor = cursor; return; } if (e.Button != MouseButtons.Left) { return; } int dx = point.X - lastPoint.X; int dy = point.Y - lastPoint.Y; lastPoint.X = point.X; lastPoint.Y = point.Y; if (selectMode == SelectionMode.Size) { if (resizedObject != null) { resizedObject.MoveHandleTo(point, resizedObjectHandle); drawArea.Refresh(); } } if (selectMode == SelectionMode.Move) { int n = drawArea.ObjList.SelectionCount; for (int i = n - 1; i >= 0; i--) { drawArea.ObjList.GetSelectedObject(i).Move(dx, dy); } DrawObject l = (DrawObject)drawArea.ObjList.GetSelectedObject(point); if (l != null) { drawArea.Cursor = Cursors.SizeAll; } drawArea.Refresh(); } if (selectMode == SelectionMode.NetSelection) { drawArea.NetRectangle = GetNormalizedRectangle(startPoint, lastPoint); drawArea.Refresh(); return; } }