|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.06.2020, 12:06 | #1 |
Новичок
Джуниор
Регистрация: 01.06.2020
Сообщений: 2
|
Анимация в c#
Здравствуйте. Помогите, пожалуйста, избавиться от мигания анимации. И еще при запуске формы, в верхнем углу видно окружность. Можно ее как-то сдвинуть?
using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; namespace WindowsFormsApp8 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private PointF tek_pt;// int x = 130, y = 20; private PointF start_pos = new Point(230, 50); private int tek_ind; private double v = 1; private int rad = 20;//радиус окружности List<PointF> points = new List<PointF>(); Graphics g; private void buttonStart_Click(object sender, EventArgs e) { points.Clear(); try { int length = 50;//размер int count = int.Parse(textBox1.Text); if (count < 3) { MessageBox.Show("Количество вершин должно быть не менее тёрх! "); Application.Exit(); } if (count > 20) { MessageBox.Show("Очень большое количество вершин. "); Application.Exit(); } if (count < 0) count = -count;//если введено отрицательное число double R = length / (2 * Math.Sin(Math.PI / count)); for (double angle = 0.0; angle <= 2 * Math.PI; angle += 2 * Math.PI / count) { int x = (int)(R * Math.Cos(angle)); int y = (int)(R * Math.Sin(angle)); points.Add(new PointF((int)R + x + start_pos.X, (int)R + y + start_pos.Y)); } this.Invalidate(); tek_pt = new PointF(points[0].X, points[0].Y); tek_ind = 1; timer1.Start(); } catch { MessageBox.Show("Данные введены не корректно!"); } } private void Form1_Paint(object sender, PaintEventArgs e) { g = e.Graphics; e.Graphics.FillEllipse(Brushes .Red, tek_pt.X - (rad / 2), tek_pt.Y - (rad /2), rad, rad); if (points.Count >= 3) e.Graphics.DrawPolygon(Pens.Bl ue, points.ToArray()); } private void timer1_Tick(object sender, EventArgs e) { if (tek_ind != points.Count - 1) { PointF A = tek_pt; PointF B = points[tek_ind]; if (Math.Sqrt(((B.X - A.X) * (B.X - A.X)) + ((B.Y - A.Y) * (B.Y - A.Y))) <= v) { tek_pt = points[tek_ind]; B = points[tek_ind + 1]; tek_ind += 1; } double k1 = B.X - A.X; double k2 = B.Y - A.Y; double h = Math.Sqrt((A.X - B.X) * (A.X - B.X) + (A.Y - B.Y) * (A.Y - B.Y)) / v; double x = A.X + (k1 / h); double y = A.Y + (k2 / h); tek_pt = new PointF((float)x, (float)y); Invalidate(); } else { tek_ind = 1; } } } } |
02.06.2020, 12:13 | #2 |
Форумчанин
Регистрация: 31.05.2009
Сообщений: 786
|
|
02.06.2020, 20:19 | #3 |
Пользователь
Регистрация: 02.01.2015
Сообщений: 12
|
пишите
почта: sauwork@yandex.ru , телега: @sauwork
|
03.06.2020, 03:17 | #4 |
Недо
Участник клуба
Регистрация: 11.08.2011
Сообщений: 1,394
|
ТЗ, срок, бюджет: larbossfreelance@yandex.ru Метка: freelance Указывайте ссылку на тему форума.
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
|
03.06.2020, 13:09 | #5 |
Новичок
Джуниор
Регистрация: 19.04.2020
Сообщений: 1
|
Уже решили на другом форуме
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
АНИМАЦИЯ | BboyBlackjack | C# (си шарп) | 0 | 07.12.2013 23:54 |
анимация | Petyu | Общие вопросы Delphi | 1 | 10.01.2013 12:40 |
Анимация. | Cause | Помощь студентам | 6 | 06.11.2010 15:45 |
анимация в c++ win api | Deathsoul | Помощь студентам | 1 | 08.05.2010 15:58 |
Анимация | Ya luo si la fu | Помощь студентам | 1 | 27.03.2010 17:42 |