Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 13.05.2019
Сообщений: 6
1

Необходимо через рекурсию нарисовать n-ое количество кругов, с элементом timer

22.06.2019, 00:00. Просмотров 1038. Ответов 2

Такая задача: Напишите приложение, которое строит ряд окружностей. Центр окружностей совпадает с центром экрана. Число окружностей задается при вызове рекурсивного метода.
С зарисовкой круга через рекурсию я справился. А как применить timer, что бы каждый круг выводился с задержкой в 500 миллисекунд - для меня, к сожалению загадка.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace ЛР_14
{
    public partial class Form1 : Form
    {
        private bool flag = false;
 
        private void MyDraw(Graphics g, int N, int x, int y)
        {
            
            if (N == 0)
                return;
            else
            {
                
                g.DrawEllipse(new Pen(Brushes.Blue, 2), 225-x/2, 225-y/2, x, y);
                x += 50;
                y += 50;
                N--;
                MyDraw(g, N, x, y);
            }
        }
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            this.BackColor = Color.White;
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            
        }
 
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            MyDraw(g, 7, 0, 0);
        }
    }
}
P.S. Не бейте за столь плохой код, уже 2 сутки не сплю
P.S.S. Ниже вот, что уже получилось.
0
Миниатюры
Необходимо через рекурсию нарисовать n-ое количество кругов, с элементом timer  
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.06.2019, 00:00
Ответы с готовыми решениями:

Нарисовать произвольное количество кругов
Написал код, чтобы рисунок шел по кругу, как задать произвольное количество кругов?

Нарисовать круги через рекурсию
Собственно надо нарисовать 6 кругов через рекурсию.... Если не знаете как через рекурсию то хотя...

Дано натуральное число. Вычислить количество цифр числа (через рекурсию)
...

Определить, в каком из кругов находится наибольшее число кругов из данного множества кругов
Круг задается радиусом и координатами центра. Имеется n кругов (n20). Определить, в каком...

2
319 / 165 / 95
Регистрация: 07.01.2016
Сообщений: 440
22.06.2019, 11:45 2
Лучший ответ Сообщение было отмечено ShonS1v4 как решение

Решение

Цитата Сообщение от ShonS1v4 Посмотреть сообщение
через рекурсию
Цитата Сообщение от ShonS1v4 Посмотреть сообщение
с элементом timer
интересно
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
    public partial class Form1 : Form
    {
        int _nMax = 7; // максимальный уровень рекурсии
        int _n = 0; // текущий уровень рекурсии
        int _deltaN = 1; // приращение уровня рекурсии за тик
        private void MyDraw(Graphics g, int N, int x, int y)
        {
 
            if (N == 0)
                return;
            else
            {
 
                g.DrawEllipse(new Pen(Brushes.Blue, 2), 225 - x / 2, 225 - y / 2, x, y);
                x += 50;
                y += 50;
                N--;
                MyDraw(g, N, x, y);
            }
        }
        public Form1()
        {
            InitializeComponent();
            timer1.Start();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            this.BackColor = Color.White;
        }
 
        private void Timer1_Tick(object sender, EventArgs e)
        {
            _n += _deltaN;
            if (_n < 1)
            {
                _n = 2;
                _deltaN = 1;
            }
            if (_n > _nMax)
            {
                _n = _nMax - 1;
                _deltaN = -1;
            }
            Invalidate();
        }
 
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            MyDraw(g, _n, 0, 0);
        }
1
Миниатюры
Необходимо через рекурсию нарисовать n-ое количество кругов, с элементом timer  
0 / 0 / 0
Регистрация: 13.05.2019
Сообщений: 6
23.06.2019, 11:41  [ТС] 3
Спасибо <3
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.06.2019, 11:41

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Нарисовать много кругов
Подскажите пожалуйста, как написать программу, которая при каждом нажатии клавиши рисует новый...

Нарисовать 10 концентрических кругов
Построить в центре экрана изображение, которое имеет 10 концентрических кругов с радиусом...

Нарисовать N рядов по 5 кругов
Ввести с клавиатуры число N и нарисовать N рядов по 5 кругов.

Решение через GOTO. Необходимо ввести номер месяца и вывести количество дней в нем, а так же количество ошибок при вводе.
Добрый вечер. Нужна помощь с изменением задачи. Необходимо ввести номер месяца и вывести количество...

Как нарисовать несколько кругов
Вопрос такой. есть Panel и у меня программа рисует при нажатии мышкой на нее круг со случайным...

Нарисовать несколько кругов на форме.
Нужно нарисовать несколько кругов на форме. я написал код но на форме рысунок не отображается ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.