0
我想在WinForm中移动一个形状。我用下面的算法实现它:在WinForm中移动一个形状
virtual public void Move(Graphics g)
{
Center.X += _dx;
if (Center.X - Size/2 < 0)
{
_dx = _dx * -1;
}
else if (Center.X + Size/2 > Form1.CanvasWidth)
{
_dx = _dx * -1;
}
Center.Y += _dy;
if (Center.Y - Size/2 < 0)
{
_dy = _dy * -1;
}
else if (Center.Y + Size/2 > Form1.CanvasHeigth)
{
_dy = _dy * -1;
}
Draw(g, _currColor);
}
其中dx = 1
和dy = 1
。物体按需移动。但我现在想要控制速度在100像素 - 每秒1000像素之间。我尝试更新计时器的时间间隔来实现这一点,但我没有看到任何重大变化。
myTimer.Interval = 1000/SpeedPx;
哪里SpeedPx
是价值之间100 - 1000
private static void TimerEventProcessor(Object myObject, EventArgs myEventArgs)
{
Form1 mainForm = Application.OpenForms.OfType<Form1>().SingleOrDefault();
using (var g = mainForm.CreateGraphics())
{
g.Clear(mainForm._background);
mainForm._shapes[mainForm._shapeIndex].Move(g);
}
}
在我的鼠标点击事件下面几行:
myTimer.Interval = 1000/SpeedPx;
myTimer.Start();
我们看不到你的计时器实际在做什么。显示所有相关的代码。 –
Graphics对象从哪里来? SpeedPx是100 - 1000之间的值,这会使间隔在1到10之间,但最小值为15-25! (定时器不能更快!!) – TaW
@TaW我应该如何实现每秒100-1000像素的速度? –