static private Point[] GetPointsByAngle(AngleEnum triangleAngle, Rectangle position) { switch (triangleAngle) { case AngleEnum.TopLeft: return(new Point[3] { new Point(position.Left, position.Top), new Point(position.Right, position.Top), new Point(position.Left, position.Bottom) }); case AngleEnum.TopCenter: return(new Point[3] { new Point(position.Left + (position.Width / 2), position.Top), new Point(position.Left, position.Bottom), new Point(position.Right, position.Bottom) }); case AngleEnum.TopRight: return(new Point[3] { new Point(position.Left, position.Top), new Point(position.Right, position.Top), new Point(position.Right, position.Bottom) }); case AngleEnum.BottomLeft: return(new Point[3] { new Point(position.Left, position.Top), new Point(position.Left, position.Bottom), new Point(position.Right, position.Bottom) }); case AngleEnum.BottomCenter: return(new Point[3] { new Point(position.Left, position.Top), new Point(position.Right, position.Top), new Point(position.Left + (position.Width / 2), position.Bottom) }); case AngleEnum.BottomRight: return(new Point[3] { new Point(position.Right, position.Top), new Point(position.Left, position.Bottom), new Point(position.Right, position.Bottom) }); default: throw EnumNotImplementedException.Throw(triangleAngle, ExceptionMessages.MSG_NOT_YET_IMPLEMENTED); } }
public override void OnMouseUp(object sender, MouseEventArgs e) { var mouseLocation = e.Location; var snappedLocation = Grid.SnapToGrid(mouseLocation); switch (action) { case SelectorAction.BeginSelectionRectangle: // Redirect to MouseUp:EndSelectionRectangle action = SelectorAction.EndSelectionRectangle; OnMouseUp(sender, e); break; case SelectorAction.EndSelectionRectangle: SetSelectedRectangle(mouseDownLocation, mouseLocation); break; case SelectorAction.BeginMoveSelectedShapes: // Redirect to MouseUp:EndMoveSelectedShapes action = SelectorAction.EndMoveSelectedShapes; OnMouseUp(sender, e); break; case SelectorAction.EndMoveSelectedShapes: ClickData.ShapeApplyOffset(); // Reset click data ClickData.Clear(false); selectedRectangleDownLocation = new Point(); mouseDownLocation = new Point(); break; case SelectorAction.None: break; default: throw EnumNotImplementedException.Throw(action, ExceptionMessages.MSG_NOT_YET_IMPLEMENTED); } Canvas.Instance.Invalidate(); }
public override void OnMouseDown(object sender, MouseEventArgs e) { if (e.Button != MouseButtons.Left) { return; } var mouseLocation = e.Location; var snappedLocation = Grid.SnapToGrid(mouseLocation); switch (action) { case SelectorAction.BeginSelectionRectangle: mouseDownLocation = mouseLocation; //ClickData.Set(mouseDownLocation, ShapeClickAction.Drag); SetSelectedRectangle(mouseDownLocation, mouseLocation); break; case SelectorAction.EndSelectionRectangle: OnMouseDown_HandleDragSelection(sender, e, mouseLocation, snappedLocation, true); break; case SelectorAction.EndMoveSelectedShapes: OnMouseDown_HandleDragSelection(sender, e, mouseLocation, snappedLocation, false); break; case SelectorAction.None: // This should only get triggered on the initial mouse down, // But in case, just clear the selected rectangle info and MouseDown with BeginSelectionRectangle ClearSelectedRectangle(); action = SelectorAction.BeginSelectionRectangle; OnMouseDown(sender, e); break; default: throw EnumNotImplementedException.Throw(action, ExceptionMessages.MSG_NOT_YET_IMPLEMENTED); } Canvas.Instance.Invalidate(); }
public static bool ShowFileDialog(LoadSaveAction action) { bool result = false; FileDialog d; Func <string, bool> fileAction; switch (action) { case LoadSaveAction.LoadProject: d = SetupFileDialog(new OpenFileDialog(), "Load Project (.shp)", ".shp"); fileAction = LoadProject; break; case LoadSaveAction.SaveProject: d = SetupFileDialog(new SaveFileDialog(), "Save Project (.shp)", ".shp"); fileAction = SaveProject; break; case LoadSaveAction.ExportToImage: d = SetupFileDialog(new SaveFileDialog(), "Export to Image (.png,.jpg,.bmp)", ".png"); fileAction = ExportToImage; break; default: throw EnumNotImplementedException.Throw(action); } if (d.ShowDialog() == DialogResult.OK) { result = fileAction(d.FileName); } d.Dispose(); d = null; return(result); }
public override void OnMouseMove(object sender, MouseEventArgs e) { if (e.Button != MouseButtons.Left) { return; } var mouseLocation = e.Location; var snappedLocation = Grid.SnapToGrid(mouseLocation); switch (action) { case SelectorAction.BeginSelectionRectangle: SetSelectedRectangle(mouseDownLocation, snappedLocation); break; case SelectorAction.BeginMoveSelectedShapes: Canvas.Instance.Focus(); ClickData.Set(ShapeClickAction.Drag); ClickData.ShapeUpdateOffset(snappedLocation); Point moveTo = new Point( snappedLocation.X - mouseDownLocation.X, snappedLocation.Y - mouseDownLocation.Y ); selectedRectangle.X = selectedRectangleDownLocation.X + moveTo.X; selectedRectangle.Y = selectedRectangleDownLocation.Y + moveTo.Y; break; default: throw EnumNotImplementedException.Throw(action, ExceptionMessages.MSG_NOT_YET_IMPLEMENTED); } Canvas.Instance.Invalidate(); }