//should be able to pass the entire object created from xml file private IDrawAction GetActionFromSavedSession(SessionData drawObject) { // ARBG in a 32 bit integer representing the ARBG values // unable to capture the name for all the colors - use arbg values _color = Color.FromArgb(drawObject.PenColor_ARBG); _fillcolor = Color.FromArgb(drawObject.BrushColor_ARBG); //get line width _line_width = drawObject.LineWidth; //get type pen if (drawObject.IsFill) { _drawingBrush = new SolidBrush(_fillcolor); } else { _drawingPen = new Pen(_color, _line_width); } //get start and end points _startPoint.X = drawObject.StartX; _startPoint.Y = drawObject.StartY; _endPoint.X = drawObject.EndX; _endPoint.Y = drawObject.EndY; if (drawObject.NameofDrawingAction.Contains("DrawLineAction")) { return(new DrawLineAction(_drawingPen, _startPoint.X, _startPoint.Y, _endPoint.X, _endPoint.Y)); } if (drawObject.NameofDrawingAction.Contains("DrawCircle") || drawObject.NameofDrawingAction.Contains("Oval")) { //shift key not saved state - no long depressed when action completed so it's not saved as true if (drawObject.IsShift) { if (drawObject.IsFill) { return(new DrawOvalAction(_drawingBrush, _startPoint.X, _startPoint.Y, _endPoint.X, _endPoint.Y, true)); } else { return(new DrawOvalAction(_drawingPen, _startPoint.X, _startPoint.Y, _endPoint.X, _endPoint.Y)); } } else { if (drawObject.IsFill) { int radius = MathHelpers.GetRadius(_startPoint, new Point(_endPoint.X, _endPoint.Y)); if (radius == 0) { return(null); } return(new DrawCircleAction(_drawingBrush, _startPoint.X, _startPoint.Y, radius, true)); } else { int radius = MathHelpers.GetRadius(_startPoint, new Point(_endPoint.X, _endPoint.Y)); if (radius == 0) { return(null); } return(new DrawCircleAction(_drawingPen, _startPoint.X, _startPoint.Y, radius)); } } } if (drawObject.NameofDrawingAction.Contains("Rectangle")) { if (drawObject.IsFill) { if (drawObject.IsShift) { //MessageBox.Show("shift key"); int diffx = Math.Abs(_startPoint.X - _endPoint.X); int samexy = _startPoint.Y + diffx; return(new DrawRectangleAction(_drawingBrush, _startPoint.X, _startPoint.Y, _endPoint.X, samexy, true)); } return(new DrawRectangleAction(_drawingBrush, _startPoint.X, _startPoint.Y, _endPoint.X, _endPoint.Y, true)); } else { if (drawObject.IsShift) { //MessageBox.Show("shift key"); int diffx = Math.Abs(_startPoint.X - _endPoint.X); int samexy = _startPoint.Y + diffx; return(new DrawRectangleAction(_drawingPen, _startPoint.X, _startPoint.Y, _endPoint.X, samexy)); } return(new DrawRectangleAction(_drawingPen, _startPoint.X, _startPoint.Y, _endPoint.X, _endPoint.Y)); } } if (drawObject.NameofDrawingAction.Contains("DrawX")) { return(new DrawXAction(_drawingPen, _startPoint.X, _startPoint.Y, _endPoint.X, _endPoint.Y)); } return(null); }
private IDrawAction GetAction(MouseEventArgs e, Pen pen) { //takes mouse arg e and converts to point / adjusts all points to next 5 Sanp2Grid(e); if (DrawLinesButton.Checked) { return(new DrawLineAction(pen, _startPoint.X, _startPoint.Y, _endPoint.X, _endPoint.Y)); } if (DrawCirclesButton.Checked) { if (Control.ModifierKeys == Keys.Shift) { _shiftKeyFlag = true; if (FillcheckBox.Checked) { return(new DrawOvalAction(_drawingBrush, _startPoint.X, _startPoint.Y, _endPoint.X, _endPoint.Y, true)); } else { return(new DrawOvalAction(pen, _startPoint.X, _startPoint.Y, _endPoint.X, _endPoint.Y)); } } else { if (FillcheckBox.Checked) { int radius = MathHelpers.GetRadius(_startPoint, new Point(_endPoint.X, _endPoint.Y)); if (radius == 0) { return(null); } return(new DrawCircleAction(_drawingBrush, _startPoint.X, _startPoint.Y, radius, true)); } else { int radius = MathHelpers.GetRadius(_startPoint, new Point(_endPoint.X, _endPoint.Y)); if (radius == 0) { return(null); } return(new DrawCircleAction(pen, _startPoint.X, _startPoint.Y, radius)); } } } if (DrawRectanglesButton.Checked) { if (FillcheckBox.Checked) { if (Control.ModifierKeys == Keys.Shift) { _shiftKeyFlag = true; //MessageBox.Show("shift key"); int diffx = Math.Abs(_startPoint.X - _endPoint.X); int samexy = _startPoint.Y + diffx; return(new DrawRectangleAction(_drawingBrush, _startPoint.X, _startPoint.Y, _endPoint.X, samexy, true)); } return(new DrawRectangleAction(_drawingBrush, _startPoint.X, _startPoint.Y, _endPoint.X, _endPoint.Y, true)); } else { if (Control.ModifierKeys == Keys.Shift) { _shiftKeyFlag = true; //MessageBox.Show("shift key"); int diffx = Math.Abs(_startPoint.X - _endPoint.X); int samexy = _startPoint.Y + diffx; return(new DrawRectangleAction(pen, _startPoint.X, _startPoint.Y, _endPoint.X, samexy)); } return(new DrawRectangleAction(pen, _startPoint.X, _startPoint.Y, _endPoint.X, _endPoint.Y)); } } if (DrawXesButton.Checked) { return(new DrawXAction(pen, _startPoint.X, _startPoint.Y, _endPoint.X, _endPoint.Y)); } return(null); }