2012-04-12 7 views
4

ページに2行ある場合図面2行

2行目の位置に達するように最初の行をアニメーション化するにはどうすればよいですか?

答えて

2

2つの場所の間で行が移動した距離のパーセンテージになる 'counter'変数を追加します。開始位置から開始するため、ゼロに初期化します。タイマーを追加し、「カウンター」をインクリメントし、クライアント領域を無効にして再ペイントするようにします。 「カウンター」が100に達すると、それが目標に向かう途中で100%になると、タイマーはもはや必要なくなります。

ペイントルーチンでは、開始位置と終了位置をすでに知っているので、2つの間の 'カウンタ'パーセンテージで線を描画します。ですから、あなたはstartXを知っていて、あなたが描いたバージョンはstartX +((endX - startX)/ 100 * counter)です。行の上、左、右、下のそれぞれに対してこれを行い、完了です。

+0

このBufferedGraphics 小さな例を使用して試してみてください、私は私の質問を編集しました。私はw2とw、h2とhを同じにして停止するまで、w2とh2を比べることができると思ったが...これはうまくいかない。アイデアを広げることができますか? – BigBug

+0

(w *(int)フレーム)を(w +((w2-w)*フレーム)に置き換えてください。 –

+0

それはうまくいかないでしょう...行は宛先行の直後に移動します.... – BigBug

1

私が間違っていない場合、あなたは点滅しており、これはあなたの問題ですか? が

System.Drawing.Graphics g = this.CreateGraphics(); 
    System.Drawing.BufferedGraphicsContext dc = new BufferedGraphicsContext(); 
    BufferedGraphics backbuffer = dc.Allocate(g, new Rectangle(new Point(0, 0), g.VisibleClipBounds.Size.ToSize())); 
    backbuffer.Graphics.DrawLine(Pens.White, 10, 10, 10, 100); 
    backbuffer.Render(g); 
+0

私が間違っていたら、私はこの回答を削除します – Likurg