Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 18.03.2016
Сообщений: 3
1

Как остановить 2 круга в центре?

14.12.2017, 15:16. Показов 662. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день , у меня возникла проблема, по условию моей задачи , 2 круга слева двигаются направо и должны остановится в центре.
Когда они остановятся в центре , слева должен выдвигаться квадрат , тоже до центра , как квадрат достигнет центра ( и поглотит 2 круга) , т.е нужно либо удалить 2 круга , когда квадрат их накроет собой и квадрат должен спуститься в низ.
Разрешение экрана:
1100 x 550 или 600 .
Или хотя бы помогите найти похожие статьи , я попробую разобраться сам

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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication3
{
 
 
    public partial class Form1 : Form
    {
        Timer timer;
        public event Del sob;
        public Form1()
        {
            InitializeComponent();
            sob += new Del(f);
            timer = new Timer();
            timer.Interval = 1000;
            timer.Tick += new EventHandler(timer_Tick);
            timer.Start();
            this.Paint += new PaintEventHandler(Form1_Paint);
            Krug[] kr = new Krug[2];
            Random r = new Random(10);
            for (int j = 0; j < 2; j++)
            {
                kr[j] = new Krug(j * 100, r.Next(30));
                this.Paint += new PaintEventHandler(kr[j].Risuem);
 
            }
 
 
            Pr pr = new Pr();
            Pr1 pr1 = new Pr1();
 
            this.Paint += new PaintEventHandler(pr.Risuem);
            this.Paint += new PaintEventHandler(pr1.Risuem1);
 
 
        }
        bool stop = false;
        bool ujeStop = false;
        void Form1_Paint(object sender, PaintEventArgs e)
        {
            if (!stop)
                i += 30;
            else
                if (!ujeStop)
                {
                    sob("Событие!");
                    ujeStop = true;
                }
            if (i >= this.Height - 80) stop = true;
 
            // e.Graphics.FillEllipse(new SolidBrush(Color.Chocolate), new Rectangle(new Point(100, 100), new Size(30, 30)));
 
        }
        int i;
        void timer_Tick(object sender, EventArgs e)
        {
            //sob((i++).ToString());
            Invalidate();
 
        }
        void f(string s)
        {
            this.Text = s;
 
        }
 
        private void button1_Click(object s, EventArgs e)
        {
 
            stop = true;
        }
    }
    public delegate void Del(string s);
    class Krug
    {
        int i = 0;
        int sh, sk;
        public Krug(int shirina, int skorost)
        {
            sh = shirina;
            sk = skorost;
            sh = 10;
        }
        public void Risuem(object sender, PaintEventArgs e)
        {
            e.Graphics.FillEllipse(new SolidBrush(Color.Yellow), new Rectangle(new Point(i += sh, 275), new Size(30, 30)));
            e.Graphics.FillEllipse(new SolidBrush(Color.Yellow), new Rectangle(new Point(i += sh, 245), new Size(30, 30)));
            
        }
    }
 
    class Pr
    {
        int i = 1010;
        public void Risuem(object sender, PaintEventArgs e)
        {
            e.Graphics.FillRectangle(new SolidBrush(Color.Chocolate), new Rectangle(new Point(i -= 20, 245), new Size(70, 70)));
        }
 
    }
 
    class Pr1
    {
        int k = 550;
        public void Risuem1(object sender, PaintEventArgs e)
        {
            e.Graphics.FillRectangle(new SolidBrush(Color.Chocolate), new Rectangle(new Point(k , 245 ), new Size(80,80)));
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.12.2017, 15:16
Ответы с готовыми решениями:

Как остановить работу программы, как при ShowDialog(), только без дополнительных форм
Программа перебирая текстовые файлы ищет нужную инфу автоматически, но встречаются неоднозначности...

Объект в центре круга
Всем доброго времени суток. Есть объект, вокруг него крутится круг. Вот пример: Вопрос...

Как поставить иконку кругом в центре border-bottom без фона border-bottom внутри круга?
Как поставить иконку кругом в центре border-bottom без фона border-bottom внутри круга?Чет...

Как найти потенциал в центре кольца и в центре дуги
объясните, пожалуйста, как интегрированием можно найти потенциал в центре дуги из согнутого...

2
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
14.12.2017, 16:33 2
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
54
55
56
57
58
59
60
61
62
63
64
65
using System;
using System.Drawing;
using System.Windows.Forms;
 
namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        private PointF _c1;//Центр первого круга
        private PointF _c2;//Центр второго круга
        private PointF _c3;//Центр квадрата
        private float _radius = 20f;
        private Timer _timer = new Timer { Interval = 200 };
        private bool _inCenter;
        private float _dx = 3, _dy;
 
        public Form1()
        {
            InitializeComponent();
            _timer.Tick += _timer_Tick;
        }
 
        private void _timer_Tick(object sender, EventArgs e)
        {
            if (!_inCenter)
            {
                _c1 = new PointF(_c1.X + _dx, _c1.Y);
                _c2 = new PointF(_c2.X + _dx, _c2.Y);
                _inCenter = _c1.X >= ClientRectangle.Width / 2f;
            }
            else
            {
                if (_c3.X <= ClientRectangle.Width / 2)
                {
                    _c1 = PointF.Empty;
                    _c2 = PointF.Empty;
                    _dx = 0;
                    _dy = 3;
                }
                _c3 = new PointF(_c3.X - _dx, _c3.Y + _dy);
            }
            Invalidate();
        }
 
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            _c1 = new PointF(0, ClientRectangle.Height / 2f - _radius);
            _c2 = new PointF(0, ClientRectangle.Height / 2f + _radius);
            _c3 = new PointF(ClientRectangle.Width, ClientRectangle.Height / 2f);
            _timer.Start();
        }
 
        protected override void OnPaint(PaintEventArgs e)
        {
            e.Graphics.DrawRectangle(Pens.Chocolate, _c3.X - 2 * _radius, _c3.Y - 2 * _radius, 4 * _radius, 4 * _radius);
            if (_c1.IsEmpty || _c2.IsEmpty)
            {
                return;
            }
            e.Graphics.FillEllipse(Brushes.Yellow, _c1.X - _radius, _c1.Y - _radius, 2 * _radius, 2 * _radius);
            e.Graphics.FillEllipse(Brushes.Yellow, _c2.X - _radius, _c2.Y - _radius, 2 * _radius, 2 * _radius);
        }
    }
}
0
0 / 0 / 0
Регистрация: 18.03.2016
Сообщений: 3
14.12.2017, 19:25  [ТС] 3
мне бы пример на моем коде показать , но спасибо вам большое , за вашу помощь
0
14.12.2017, 19:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.12.2017, 19:25
Помогаю со студенческими работами здесь

Нарисовать квадрат, который в каждый момент своего движения касается одной из сторон круга с центром в центре экрана
Собственно сабж. Помогите пожалуйста. Заранее спасибо.

Поставить круг по центру белого блока и поставить цифру "1" в центре самого круга
Мне нужно поставить круг по центру белого блока и поставить цифру &quot;1&quot; по середине самого круга. Как...

Определить площадь круга, длину круга, и объем цилиндра через процедуру
Определить площадь круга, длину круга, и объем цилиндра через процедуру! Пожалуйста решите. Очень...

Сделать таймер задержки отрисовки круга с удалением предыдущего круга
Задача такая: сделать коротенькую анимацию, в которой круг катится по горизонтали. Рисуется круг,...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru