Движущийся по формуле рисунок - C#
Формулировка задачи:
Вот сделал программу, которая должна на графике отображать равноускоренное движение. Но с таймером намудрил, кажется. Эллипс не рисуется+в текстбоксе и на графике начинает меняться значение S, которое уже должно оставаться там постоянным. Движение реализуется рисунком эллипса на новом месте с закрашыванием предыдущего под цвет фона. Помогите с таймером разобраться.
namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } int x, y, sl, n, edx, tek, i; double V0, A, t, Steor, k, Tprom; double s = 0; private void Form1_Load(object sender, EventArgs e) { Font = new System.Drawing.Font("Comic Sans MS", 10, FontStyle.Bold); } private void button1_Click(object sender, EventArgs e) { n = Convert.ToInt32(textBox4.Text); tek = Convert.ToInt32(textBox3.Text); V0 = Convert.ToDouble(textBox1.Text); A = Convert.ToDouble(textBox2.Text); sl = (int)(1000 * (Convert.ToDouble(tek)/Convert.ToDouble(n))); Tprom = Convert.ToDouble(tek) / Convert.ToDouble(n); Steor = V0 * tek + (A * tek * tek) / 2; textBox6.Text = Convert.ToString(Steor); for (i = 1; i <= n; i++) { s = s + (V0 + A * (i - 1) * Tprom) * Tprom; } textBox5.Text = Convert.ToString(s); if (s != 0) { k = pictureBox1.Width / s; } else MessageBox.Show("Ошибка"); Graphics m = pictureBox1.CreateGraphics(); Pen BlackPen; BlackPen = new Pen(Color.Black); Point mx1, mx2; mx1 = new Point(0, pictureBox1.Height - 10); mx2 = new Point(pictureBox1.Width, pictureBox1.Height - 10); m.DrawLine(BlackPen, mx1, mx2); edx = pictureBox1.Width / 10; for (i = 1; i <= 9; i++) { Point my1, my2; my1 = new Point(edx * i, pictureBox1.Height - 20); my2 = new Point(edx * i, pictureBox1.Height); m.DrawLine(BlackPen, my1, my2); m.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias; string lbl = String.Format("{0}", Convert.ToString(s * i / 10)); Brush br = new SolidBrush(Color.Black); m.DrawString(lbl, Font, br, edx * i, pictureBox1.Height - 30); timer1.Interval = sl; timer1.Start(); } } private void timer1_Tick(object sender, EventArgs e) { timer1.Stop(); Graphics el = pictureBox1.CreateGraphics(); x = 0; y = 180; s = 0; Pen Red; Red = new Pen(Color.Red); Brush br2 = new SolidBrush(Color.Red); el.FillEllipse(br2, 0, 180, 10, 10); for (i = 1; i <= n; i++) { Brush bc = new SolidBrush(Color.Aqua); el.FillEllipse(bc, 0, 180, 10, 10); t = Tprom * i; s = s + (V0 + A * (i - 1) * Tprom) * Tprom; x = (int)(s * k); el.FillEllipse(br2, x, 180, 10, 10); } } } }
Решение задачи: «Движущийся по формуле рисунок»
textual
Листинг программы
for (i = 1; i < n+1; i++) { Brush bc = new SolidBrush(Color.Aqua); el.FillEllipse(bc, 0, 180, 10, 10); t = Tprom*i; s = s + (V0 + A*(i - 1)*Tprom)*Tprom; x = (int) (s*k); el.FillEllipse(br2, x, 180, 10, 10); Thread.Sleep(1000); el.FillEllipse(bc, x, 180, 10, 10); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д