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ピクセル/秒の速度を制御したいと考えています。私はこれを達成するために私のタイマーの間隔を更新しようとするが、私は大きな変化は見られない。
SpeedPx
は100個の間の値である
myTimer.Interval = 1000/SpeedPx;
- 私のマウスのクリックイベントで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ピクセルの速度を達成するにはどうすればよいですか? –