private bool SubmitResizeObject() { bool result = false; if (resizedObject != null) { // after resizing resizedObject.Normalize(); if (wasMove) { resizedObject.RaiseChanged(true); // raise DrawObjChanged event result = true; } resizedObject = null; selectMode = SelectionMode.Select; } return(result); }
/// <summary> /// delete draw objcet /// </summary> /// <param name="drawObject"></param> public void DeleteDrawObject(DrawObject drawObject) { var removeItem = graphicsList.Find(item => item.Name == drawObject.Name); var success = graphicsList.Remove(removeItem); }
public override void OnMouseDown(RichPictureBox richPictureBox, MouseEventArgs e) { wasMove = false; Point point = new Point((int)(e.X / richPictureBox.Zoom - richPictureBox.OffsetX), (int)(e.Y / richPictureBox.Zoom - richPictureBox.OffsetY)); selectMode = SelectionMode.None; dragBoxFromMouseDown = Rectangle.Empty; // Test for moving or resizing (only if control is selected, cursor is on the handle) foreach (DrawObject o in richPictureBox.GraphicsList) { if (o is DrawCircle) { continue; } DrawObject.HitTestResult htr = o.HitTest(richPictureBox, point, false); if (!o.Selected) // test for drag and drop { if (htr.ElementType == DrawObject.ElementType.Gate) { Size dragSize = SystemInformation.DragSize; dragBoxFromMouseDown = new Rectangle(new Point(e.X - (dragSize.Width / 2), e.Y - (dragSize.Height / 2)), dragSize); selectMode = SelectionMode.Drag; } } else if (htr.ElementType == DrawTools.DrawObject.ElementType.Handle) { int handleNumber = htr.Index; if (handleNumber > 0) { selectMode = SelectionMode.Size; // keep resized object in class member resizedObject = o; resizedObjectHandle = handleNumber; //Restore DrawPolygonFrame para if (resizedObject is DrawPolyLine) { (resizedObject as DrawPolyLine).NeedReverseX = false; (resizedObject as DrawPolyLine).NeedReverseY = false; (resizedObject as DrawPolyLine).SetProportion = true; } richPictureBox.GraphicsList.UnselectAll(); o.Selected = true; break; } } else if (htr.ElementType == DrawObject.ElementType.Gate) { selectMode = SelectionMode.Move; richPictureBox.Cursor = Cursors.SizeAll; break; } } // Test for selection (cursor is on the object or label) if (selectMode == SelectionMode.None || selectMode == SelectionMode.Drag) { DrawObject o = null; int gateIndex = 0; for (int i = 0; i < richPictureBox.GraphicsList.Count; i++) { if (richPictureBox.GraphicsList[i] is DrawCircle) { continue; } DrawObject.HitTestResult htr = richPictureBox.GraphicsList[i].HitTest(richPictureBox, point, true); if (htr.ElementType == DrawObject.ElementType.Gate) { o = richPictureBox.GraphicsList[i]; gateIndex = htr.Index; selectMode = o.Selected ? SelectionMode.Move : SelectionMode.Select; if (selectMode == SelectionMode.Select) { richPictureBox.DrawObject = o; } break; } } if (o != null) { if ((Control.ModifierKeys & Keys.Control) == 0 && !o.Selected) { richPictureBox.GraphicsList.UnselectAll(); } o.Selected = true; } } // un-select if (selectMode == SelectionMode.None || selectMode == SelectionMode.Drag) { // click on background if ((Control.ModifierKeys & Keys.Control) == 0) { richPictureBox.GraphicsList.UnselectAll(); } } // Net selection if (selectMode == SelectionMode.None) { selectMode = SelectionMode.NetSelection; } lastPoint.X = e.X; lastPoint.Y = e.Y; startPoint.X = e.X; startPoint.Y = e.Y; richPictureBox.Capture = true; richPictureBox.Refresh(); }