2017-06-22 8 views
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 = 1dy = 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(); 
+0

タイマーが実際に行っていることはわかりません。関連するすべてのコードを表示します。 –

+0

Graphicsオブジェクトはどこから来たのですか? _ SpeedPxが100 - 1000_の間の値であると、インターバルは1〜10になりますが、最小値は15〜25です! (タイマーはそれ以上速く動くことはできません!!) – TaW

+0

@TaW毎秒100〜1000ピクセルの速度を達成するにはどうすればよいですか? –

答えて

0

それはSystem.Timerだ場合、タイマー間隔ミリ秒単位であるため、1000/1000 .. 1000/100は1〜10ミリ秒を与えます。平均的な人間は大きな違いを見ません。

+0

実際はあなたはそうしていますが、システムは単にそれを行うことはできません。 – TaW

関連する問題