我在form1中有这个我为label2分配定时器间隔,默认间隔是100ms。 我希望用户能够看到它并将间隔速度更改为每秒帧数:
label2.Text = timer1.Interval.ToString();
这是Form1中的鼠标滚轮事件:
private void Form1_MouseWheel(object sender, MouseEventArgs e)
{
PbsWheel pbsw = new PbsWheel(pbs, pb, e.Delta, label2);
}
这是班级Pbswheel pbs是pictureBoxes的数组,pb是pictureBox。
using System;
using System.Windows.Forms;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WeatherMaps
{
class PbsWheel
{
public PbsWheel(AnimatedPictureBox.AnimatedPictureBoxs[] pbs, AnimatedPictureBox.AnimatedPictureBoxs pb, int delta,Label label2)
{
for (int i = 0; i < pbs.Length; i++)
{
if (delta > 0)
{
if (pbs[i].AnimateRate < 5000)
{
if (pbs[i].AnimateRate < 1000)
{
pbs[i].AnimateRate += 100;
label2.Text = (pbs[i].AnimateRate / (double)1000).ToString();
}
else
{
pbs[i].AnimateRate += 1000;
label2.Text = (pbs[i].AnimateRate / 1000).ToString();
}
}
}
else
{
if (pbs[i].AnimateRate > 1000)
{
pbs[i].AnimateRate -= 1000;
label2.Text = (pbs[i].AnimateRate / 1000).ToString();
}
else
if (pbs[i].AnimateRate <= 1000 && pbs[i].AnimateRate > 100)
{
pbs[i].AnimateRate -= 100;
label2.Text = (pbs[i].AnimateRate / (double)1000).ToString();
}
}
}
if (delta > 0)
{
if (pb.AnimateRate < 5000)
{
if (pb.AnimateRate < 1000)
{
pb.AnimateRate += 100;
label2.Text = (pb.AnimateRate / (double)1000).ToString();
}
else
{
pb.AnimateRate += 1000;
label2.Text = (pb.AnimateRate / 1000).ToString();
}
}
}
else
{
if (pb.AnimateRate > 1000)
{
pb.AnimateRate -= 1000;
label2.Text = (pb.AnimateRate / 1000).ToString();
}
else
if (pb.AnimateRate <= 1000 && pb.AnimateRate > 100)
{
pb.AnimateRate -= 100;
label2.Text = (pb.AnimateRate / (double)1000).ToString();
}
}
}
}
}
现在我在运行程序时所做的事情我在label2 100(100ms)上看到 然后,当我将车轮向下移动时,最快速度达到最小值0.1。 当我向上移动时:01,0.2,0.3 ...... 0.9,1,2,3,4,5 最高速度为5秒。
它的作用是改变每个pictureBox中图像的速度将显示为动画/循环。
AnimateRate在此类中使用此类为每个pictureBox为动画/图像循环制作计时器,AnimateRate在移动鼠标滚轮时设置速度。
using System;
using System.Windows.Forms;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DannyGeneral;
namespace WeatherMaps
{
class AnimatedPictureBox
{
//Use this custom PictureBox for convenience
public class AnimatedPictureBoxs : PictureBox
{
public static bool images;
List<string> imageFilenames;
Timer t = new Timer();
public AnimatedPictureBoxs()
{
images = false;
AnimateRate = 100; //It's up to you, the smaller, the faster.
t.Tick += Tick_Animate;
}
public int AnimateRate
{
get { return t.Interval; }
set { t.Interval = value; }
}
public void Animate(List<string> imageFilenames)
{
this.imageFilenames = imageFilenames;
t.Start();
}
public void StopAnimate()
{
t.Stop();
i = 0;
}
int i;
private void Tick_Animate(object sender, EventArgs e)
{
if (images == true)
{
imageFilenames = null;
}
if (imageFilenames == null)
{
return;
}
else
{
try
{
if (i >= imageFilenames.Count)
{
i = 0;
}
else
{
Load(imageFilenames[i]);
i = (i + 1) % imageFilenames.Count;
}
}
catch (Exception err)
{
Logger.Write(err.ToString());
}
}
}
}
}
}
form1中的timer1永远不会使用我只是做了label2文本将是timer1的默认间隔,但我没有使用timer1。
代码有点长,但全部连接。
而是改变现在的速度,我想将其更改为每秒帧数。
答案 0 :(得分:1)
每秒帧数是频率,f,间隔是期间,P。频率和周期之间的关系是
P = 1/f
我认为这就是你需要知道的全部。