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

Ссылка на объект не указывает на экземпляр объекта

18.11.2018, 13:31. Показов 911. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно было сделать анимацию произвольного движения окружностей
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
namespace WindowsFormsApplication4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        int rad;
        Graphics g;
        Pen p;
        SolidBrush c;
        Random rnd;
        void Рисуем(int x, int y)
        {
            int xc, yc;
            xc = x - rad;
            yc = y - rad;
          g.FillEllipse(c, xc, yc, rad, rad); //( Здесь) :scratch:
 
            g.DrawEllipse(p, xc, yc, rad, rad);
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            Graphics g = this.CreateGraphics();
            timer1.Enabled = true;
            p = new Pen(Color.Lime);          
             c= new SolidBrush(Color.Purple);
 
            rad = 40;                          
            rnd = new Random();
            int x, y;
 
            for (int i = 0; i < 15; i++)
            {
                x = rnd.Next(100);
                y = rnd.Next(100);
                Рисуем(x, y);
            }
            timer1.Enabled = true;
        }
 
       
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            int x, y;
            for (int i = 0; i < 15; i++)
            {
                x = rnd.Next(100);
                y = rnd.Next(100);
                Рисуем(x, y);
            }
 
            Invalidate();
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.11.2018, 13:31
Ответы с готовыми решениями:

Ссылка на объект не указывает на экземпляр объекта
Всем доброго времени суток! Программирование изучается в слепую. В университете показывают, как...

Ссылка на объект не указывает на экземпляр объекта
Всем привет! Мне необходимо написать следующее приложение: на форме один по периметру бегает...

Ссылка на объект не указывает на экземпляр объекта
В main есть данный код: rb = new RadioButton; for (int i = 0; i &lt; rb.Length; i++)...

Ссылка на объект не указывает на экземпляр объекта
Не могу записать данные из dataGridView пишет &quot;Ссылка на объект не указывает на экземпляр объекта.&quot;...

2
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
18.11.2018, 14:38 2
DariaDasha7, в такой реализации, если довести её до конца, движения не получилось бы. Эллипсы просто возникали бы в разных местах, а не двигались. Чтобы они двигались им нужно задавать скорость и направление, по таймеру менять положение центра в соответствии со скоростью и направлением и перерисовывать. Примерно так:
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
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private List<Ellipse> ellipses;
        private Timer timer1;
        private Brush _brush = Brushes.Orange;
        private Pen _pen = Pens.Blue;
 
        //Чтобы меньше мерцало
        protected override bool DoubleBuffered
        {
            get
            {
                return true;
            }
            set
            {
                base.DoubleBuffered = true;
            }
        }
 
        //тут инициализация при загрузке формы
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            var rnd = new Random();
            //Заполняем список
            ellipses = Enumerable.Range(0, 20)
                .Select(n => new Ellipse
                {
                    RadiusY = rnd.Next(30, 80),//Эллипсы случайного радиуса
                    RadiusX = rnd.Next(30, 80),
                    //Со случайным центром в пределах формы
                    Center = new Point(rnd.Next(ClientRectangle.Width), rnd.Next(ClientRectangle.Height)),
                    //Двигаться в случайном направлении
                    Direction = new PointF((float)rnd.Next(-2, 2), (float)rnd.Next(-2, 2)),
                    //Со случайной скоростью от 3 до 5 единиц
                    Speed = (float)(rnd.NextDouble() * (5 - 3) + 3)
                })
                .ToList();
            //Таймер с интервалом 100 мс
            timer1 = new Timer
            {
                Enabled = true,
                Interval = 100
            };
            timer1.Tick += timer1_Tick;
        }
        //тут рисуем. При прорисовке формы
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            ellipses.ForEach(el => el.Draw(e.Graphics, _pen, _brush));
 
        }
 
        //таймер
        private void timer1_Tick(object sender, EventArgs e)
        {
            ellipses.ForEach(el => el.Move());
            Invalidate();
        }
    }
    //Эллипс, который будем рисовать
    class Ellipse
    {
        internal float RadiusX;
        internal float RadiusY;
        internal PointF Center;
        internal PointF Direction;
        internal float Speed = 1f;
 
        //Метод рисования
        internal void Draw(Graphics g, Pen pen, Brush brush)
        {
            var rect = RectangleF.FromLTRB(Center.X - RadiusX, Center.Y - RadiusY, Center.X + RadiusX, Center.Y + RadiusY);
            g.FillEllipse(brush, rect);
            g.DrawEllipse(pen, rect);
        }
 
        internal void Move()
        {
            Center = new PointF(Center.X + Direction.X * Speed, Center.Y + Direction.Y * Speed);
        }
    }
0
0 / 0 / 0
Регистрация: 06.11.2018
Сообщений: 43
18.11.2018, 22:08  [ТС] 3
Спасибо большое . Но не подскажите пожалуйста как можно написанное вами, реализовать в моем коде ? А то для меня слишком замудренно
0
18.11.2018, 22:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.11.2018, 22:08
Помогаю со студенческими работами здесь

Ссылка на объект не указывает на экземпляр объекта
Доброго времени суток, форумчане! Перешёл на VS 2017, раньше работал в VS 2015. Создал новый...

Ссылка на объект не указывает на экземпляр объекта
Налепил вот такой код foreach (TabPage page in tabControl1.TabPages) // переходим по вcем...

Ссылка на объект не указывает на экземпляр объекта
Всем доброго времени суток, заранее прошу не ругаться, ибо только учусь) Задача такая: при нажатии...

Ссылка на объект не указывает на экземпляр объекта
Не могу понять, почему именно я славлваю NullReferenceException.. Ругается на эту строчку(25-я в...


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

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