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); }
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(); }