Esempio n. 1
0
 private void button3_Click(object sender, EventArgs e)
 {
     clientOutputtextBox.Text = "";
     points.Clear();
     points.Add(new Point(pictureBox1.Height / 2, pictureBox1.Width / 2));
     mainDirection = CoorinateSystemDirection.Up;
     //DrawFunction(Step(2), CommandToDirection("R"));
     //DrawFunction(Step(2), CommandToDirection("R"));
     //DrawFunction(Step(2), CommandToDirection("R"));
     pictureBox1.Image = null;
     //g.FillRectangle(Brushes.Black, new Rectangle(0, 0, pictureBox1.Width, pictureBox1.Height));
     g = Graphics.FromImage(DrawArea);
 }
Esempio n. 2
0
        private void DrawFunction(int length, Direction direction)
        {
            drawingArea = pictureBox1.CreateGraphics();
            g           = Graphics.FromImage(DrawArea);
            //if there aren't any crossroads
            if ((int)direction < 2)
            {
                var newPoint = CalculatePoint(points[points.Count - 1], length, direction);

                points.Add(newPoint);

                var temp = (int)mainDirection + (int)direction;

                switch (temp)
                {
                case -1:
                    temp = 3;
                    break;

                case 4:
                    temp = 0;
                    break;

                default:
                    break;
                }
                mainDirection = (CoorinateSystemDirection)temp;
                Console.WriteLine("Main {0} Direction {1} {2} - {3} length {4}", mainDirection, direction, newPoint.X,
                                  newPoint.Y, length);
            }
            else
            {
                // if there are crossroads
                var crossPoint  = points[points.Count - 1];
                var crossPoints = new List <Point>();
                var redPen      = new Pen(Color.Red);
                switch (direction)
                {
                case Direction.LeftForward:
                {
                    var leftPoint    = CalculatePoint(crossPoint, crossLinesLength, Direction.Left);
                    var forwardPoint = CalculatePoint(crossPoint, crossLinesLength, Direction.Forward);
                    points.Add(leftPoint);
                    points.Add(crossPoint);
                    points.Add(forwardPoint);
                    points.Add(crossPoint);

                    crossPoints.Add(leftPoint);
                    crossPoints.Add(crossPoint);
                    crossPoints.Add(forwardPoint);
                    crossPoints.Add(crossPoint);

                    break;
                }

                case Direction.RightForward:
                {
                    var forwardPoint = CalculatePoint(crossPoint, crossLinesLength, Direction.Forward);
                    var rightPoint   = CalculatePoint(crossPoint, crossLinesLength, Direction.Right);
                    points.Add(forwardPoint);
                    points.Add(crossPoint);
                    points.Add(rightPoint);
                    points.Add(crossPoint);

                    crossPoints.Add(forwardPoint);
                    crossPoints.Add(crossPoint);
                    crossPoints.Add(rightPoint);
                    crossPoints.Add(crossPoint);

                    break;
                }

                case Direction.LeftRigth:
                {
                    var leftPoint  = CalculatePoint(crossPoint, crossLinesLength, Direction.Left);
                    var rightPoint = CalculatePoint(crossPoint, crossLinesLength, Direction.Right);
                    points.Add(leftPoint);
                    points.Add(crossPoint);
                    points.Add(rightPoint);
                    points.Add(crossPoint);

                    crossPoints.Add(leftPoint);
                    crossPoints.Add(crossPoint);
                    crossPoints.Add(rightPoint);
                    crossPoints.Add(crossPoint);

                    break;
                }

                default:
                    break;
                }
                redPen.Width = 10;
                g.DrawLines(redPen, crossPoints.ToArray());
            }

            blackPan.Width = 5;
            //drawingArea.DrawLines(blackPan, points.ToArray());


            g.DrawLines(blackPan, points.ToArray());

            pictureBox1.Image = DrawArea;

            g.Dispose();
        }