Изменение аргументов события таймера

1

Я кодирую приложение.Net, используя Windows.Forms в С#. Я делаю имитацию табло с использованием графических ящиков. План состоит в том, чтобы суммировать их ширину 2 пикселя каждый таймер до тех пор, пока они не достигнут желаемой ширины. И эта проблема, потому что я понятия не имею, как сообщить функции таймера, какая ширина изображения должна увеличиваться. Я не хочу использовать другой метод для каждого изображения, потому что я не думаю, что это действительно оптимальный способ сделать это.

Итак, вопрос в том, как я могу настроить указанные pixtureboxes и требуемые ширины на метод timer_tick?

Я пытаюсь сделать что-то вроде доски в польской версии Family Feud: https://www.youtube.com/watch?v=uL-y18ZkbcQ (смотреть с 3:05)

  • 0
    Что у тебя уже есть?
  • 0
    У меня есть куча вещей, я знаю ... Я делаю тест, и я хочу, чтобы ответы отображались как на табло, поэтому у меня есть pb для ответов и для очков (около 14 коробок с картинками), и я хочу анимируйте их, используя таймер, но я хочу решить, на какое изображение должно повлиять событие отметки времени.
Теги:
winforms
visual-studio-2013

1 ответ

4
Лучший ответ

Просто напишите небольшой вспомогательный класс, чтобы следить за таймером и коробкой с картинками. Это может выглядеть так:

    class Animator : IDisposable {
        private Timer timer;
        private PictureBox pbox;
        private int maxSize;
        public Animator(PictureBox box, int size) {
            pbox = box;
            maxSize = size;
            timer = new Timer() { Interval = 45, Enabled = true };
            timer.Tick += animate;
        }
        private void animate(object sender, EventArgs e) {
             if (pbox.IsDisposed || pbox.Width >= maxSize) Dispose();
             else pbox.Width += Math.Min(2, maxSize - pbox.Width);
        }
        public void Dispose() { timer.Dispose();  }
    }

Теперь вы можете создать столько, сколько хотите, с помощью простого оператора в своем классе Form:

   new Animator(pictureBox1, 50);
  • 0
    Спасибо, только то, что мне было нужно :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню