Движущийся по формуле рисунок - 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);
            }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.867 из 5
Похожие ответы