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像素的速度? –