【问题标题】:Changing arguments of a timer tick event更改计时器滴答事件的参数
【发布时间】:2014-06-08 14:00:40
【问题描述】:

我正在使用 C# 中的 Windows.Forms 编写一个 .Net 应用程序。我正在使用图片框进行记分牌模仿。计划是在每个计时器滴答声中将它们的宽度增加 2px,直到它们达到所需的宽度。这就是问题所在,因为我不知道如何告诉计时器刻度函数它应该增加多少图片框的宽度。我不想对每个图片框都使用不同的方法,因为我认为这并不是最佳的方法。

那么,问题是,如何设置指定的像素框和所需的宽度以受 timer_tick 方法的影响?

我正在尝试做一些类似于波兰版 Family Feud 中的董事会:https://www.youtube.com/watch?v=uL-y18ZkbcQ(从 3:05 开始观看)

【问题讨论】:

  • 你已经拥有了什么?
  • 我有很多东西,你知道...我正在做一个测验,我希望答案像记分牌一样显示,所以我有一个答案和分数(大约 14 个图片框),我想使用计时器为它们设置动画,但我想决定计时器滴答事件应该影响哪个图片框。

标签: c# .net winforms visual-studio-2013


【解决方案1】:

只需编写一个小助手类来跟踪计时器和图片框。它可能看起来像这样:

    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);

【讨论】:

  • 谢谢,正是我需要的:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-01
  • 2013-07-03
  • 1970-01-01
  • 1970-01-01
  • 2021-12-10
  • 1970-01-01
相关资源
最近更新 更多