Переместить объект на указанное расстояние в течение определенного промежутка времени - PullRequest
0 голосов
/ 27 декабря 2011

Мне нужно создать что-то похожее на индикатор выполнения, но постепенно смещается вправо от формы, а не в процентах от завершения.При вызове метода перемещения необходимо указать и время, и расстояние, например, я хочу, чтобы объект перемещался на 200 пикселей вправо в течение 10 секунд.

Я просто хотел получить несколько советов о том, как лучше всего это сделать?

Я думал об использовании таймера и перемещении объекта на 1 пиксель вправо после каждого тика, а затем об ограничении времени, устанавливая предел для тиков.Также объект должен выглядеть как прямая вертикальная линия.Я думал об использовании изображения линии, так как я более знаком с этим, чем рисование изображений, но лучше ли будет рисовать линию, а затем перерисовывать ее постоянно (как перетаскивание)?

1 Ответ

0 голосов
/ 27 декабря 2011

Что-то быстрое и грязное:

public Form1()
{
    InitializeComponent();

    const int maxWidth = 200;
    const int maxTicks = 10;
    var currentTick = 0;

    // Create panel and add it to this form
    var panel = new Panel { Location = new Point(1, 1), BackColor = Color.Blue, Width = 0, Height = 5 };
    Controls.Add(panel);

    // Create timer that handles updates
    var t = new Timer { Interval = 1000 };
    t.Tick += delegate
    {
        panel.Width = maxWidth / maxTicks * currentTick;
        if (currentTick++ != maxTicks)
            return;
        panel.BackColor = Color.Green;
        t.Dispose();
    };
    t.Start();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...