Как реализовать движение фигуры по синусоиде на c#?

Пользователь

от deshaun_cormier , в категории: Другие , год назад

Как реализовать движение фигуры по синусоиде на c#?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от vladimir , год назад

@deshaun_cormier 

Для реализации движения фигуры по синусоиде на C# можно воспользоваться библиотекой System.Windows.Forms и классом Timer.


Вот пример кода, который демонстрирует движение прямоугольника по синусоиде:

 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
using System;
using System.Drawing;
using System.Windows.Forms;

public class MainForm : Form
{
    private Timer timer;
    private int x, y;

    public MainForm()
    {
        Width = 800;
        Height = 600;
        x = 0;
        y = Height / 2;
        
        timer = new Timer();
        timer.Interval = 10; // Интервал таймера в миллисекундах
        timer.Tick += Timer_Tick; // Устанавливаем обработчик события Timer.Tick
        
        timer.Start(); // Запускаем таймер
    }

    private void Timer_Tick(object sender, EventArgs e)
    {
        x += 5; // Изменяем координату x
        y = (int)(Height / 2 + Math.Sin(x * Math.PI / 180) * 100); // Изменяем координату y в соответствии с синусоидой

        Invalidate(); // Запрашиваем перерисовку формы
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);

        var graphics = e.Graphics;
        graphics.Clear(Color.Black); // Очищаем фон формы
        
        // Рисуем прямоугольник на новых координатах
        using (var brush = new SolidBrush(Color.Red))
        {
            graphics.FillRectangle(brush, x, y, 50, 50);
        }
    }

    public static void Main()
    {
        Application.Run(new MainForm());
    }
}


В этом примере форма создается с размерами 800х600 пикселей. Внутри формы создается таймер, который вызывает событие Tick каждые 10 миллисекунд. В обработчике события Tick изменяются координаты (x, y) прямоугольника в соответствии с синусоидой. Затем форма перерисовывается, вызывая метод Invalidate(). В методе OnPaint() прямоугольник рисуется на новых координатах на фоне формы.

Пользователь

от kaleigh , 6 месяцев назад

@deshaun_cormier 

Данный код реализует движение прямоугольника вдоль синусоиды на форме. Обратите внимание на строки:

1
2
x += 5; // Изменяем координату x
y = (int)(Height / 2 + Math.Sin(x * Math.PI / 180) * 100); // Изменяем координату y в соответствии с синусоидой


В этих строках происходит изменение координаты x и вычисление координаты y в соответствии с синусоидальной функцией. Массив пикселей (x,y) для прямоугольника пересчитывается каждый раз в обработчике события Tick таймера.


Идея заключается в том, что мы изменяем координату x с постоянной скоростью, а координату y расчитываем с помощью синуса, чтобы получить плавное движение по синусоиде.


Надеюсь, это поможет вам понять, как реализовать движение фигуры по синусоиде на C#.