示例#1
0
 /// <summary>
 /// Функция для отрисовки прямой.
 /// </summary>
 /// <param name="depth"> Глубина рекурсии.</param>
 /// <param name="target"> Где рисовать.</param>
 public override void Refresh(int depth, Graphics target)
 {
     target.DrawLine(new Pen(Color.Blue, 4), start, end);
     if (depth <= maxRecur && depth > 0)
     {
         var left  = new Kantor(new Point(start.X, start.Y + delta), new Point((2 * start.X + end.X) / 3, end.Y + delta));
         var right = new Kantor(new Point((start.X + 2 * end.X) / 3, end.Y + delta), new Point(end.X, end.Y + delta));
         left.Refresh(depth - 1, target);
         right.Refresh(depth - 1, target);
     }
 }
示例#2
0
 /// <summary>
 /// Рисование множества Кантора.
 /// </summary>
 /// <param name="target"> Где рисовать.</param>
 private void Kant(Graphics target)
 {
     SetupForKantor();
     if (int.TryParse(textBox1.Text, out int temp) && temp > 0 && temp <= 100)
     {
         Kantor.delta = temp;
         Point start = new Point(100, 100);
         start.X += current.X;
         start.Y += current.Y;
         Point end = new Point(pictureBox.Size.Width - 100, 100);
         end.X += current.X;
         end.Y += current.Y;
         Point middle = new Point((start.X + end.X) / 2, (start.Y + end.Y) / 2);
         start = new Point((start.X - middle.X) * delta + middle.X, (start.Y - middle.Y) * delta + middle.Y);
         end   = new Point((end.X - middle.X) * delta + middle.X, (end.Y - middle.Y) * delta + middle.Y);
         var kantorFract = new Kantor(start, end);
         kantorFract.Refresh(recur, target);
     }
     else if (textBox1.Text != "")
     {
         throw new ArgumentException("Неправильно введено количество пикселей между прямыми");
     }
 }