示例#1
0
        //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);
        }
示例#2
0
        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);
        }