/// <summary>
        /// Gets what direction to use in the next spinn
        /// </summary>
        /// <param name="left">Newly set left margin</param>
        /// <param name="previousDirection">What was the previous direction</param>
        /// <returns>FigureMoveDirection</returns>
        private FigureMoveDirection GetDirection(double left, FigureMoveDirection previousDirection)
        {
            if ((previousDirection == FigureMoveDirection.Left) && (left < (spinningObjectCanvas.Dispatcher.Invoke(() => spinningObjectCanvas.ActualWidth))))
            {
                return(FigureMoveDirection.Left);
            }
            else if (left >= 0)
            {
                return(FigureMoveDirection.Right);
            }

            return(FigureMoveDirection.Left);
        }
        /// <summary>
        /// Sets the position of the figure
        /// </summary>
        /// <param name="drawMode">Affects how the margin is applied</param>
        private void SetFigurePosition(FigureDrawMode drawMode)
        {
            Thickness marginOfShape = polygonOfClass.Dispatcher.Invoke(() => polygonOfClass.Margin);

            if (drawMode == FigureDrawMode.StartUp)
            {
                marginOfShape.Left = 20;
            }
            else
            {
                if (direction == FigureMoveDirection.Left)
                {
                    marginOfShape.Left += 20;
                }
                else
                {
                    marginOfShape.Left -= 20;
                }
                direction = GetDirection(marginOfShape.Left, direction == FigureMoveDirection.Left ? FigureMoveDirection.Left : direction);
            }
            polygonOfClass.Dispatcher.Invoke(() => polygonOfClass.Margin = marginOfShape);
            spinningObjectCanvas.Dispatcher.Invoke(() => spinningObjectCanvas.Children.Remove(polygonOfClass));
            spinningObjectCanvas.Dispatcher.Invoke(() => spinningObjectCanvas.Children.Add(polygonOfClass));
        }