0

フォーム内のひし形(たとえば、200ミリ秒ごとに2ピクセル)を水平方向に移動したいと思います。From_Paintイベントで次のコードを使用しました。

private void Form1_Paint(object sender, PaintEventArgs e)
{
    Graphics g = e.Graphics;
    Point p1 = new Point(5,0);
    Point p2 = new Point(10, 5);
    Point p3 = new Point(5, 10);
    Point p4 = new Point(0, 5);
    Point[] ps = { p1, p2, p3, p4, p1 };
    g.DrawLines(Pens.Black, ps);
}

ピクチャーボックスを動かす方法は知っていますが、形を使う方法は知っています。

ありがとう、アニ

4

2 に答える 2

2

フォーム レベルの変数で現在地を追跡する必要があります。これを行うと、Form1_Paint イベントは、描画するたびに X ピクセルの位置を変更できます。

フォームにタイマーを追加し、間隔を 200 ミリ秒に設定するだけです。200 ミリ秒ごとに、現在の X ピクセルに 2 を追加し、コントロールを無効にします (再描画します)。


編集:これをフォームに追加します:

int xOffset = 0;

次に、あなたの timer_Tick で:

private void timer1_Tick(object sender, EventArgs e)
{
    if (xOffset < 500)
        xOffset += 2;
    else
        timer1.Enabled = false; // This will make it only move 500 pixels before stopping.... Change as desired.

    this.Invalidate(); // Forces repaint
}

ペイント イベントを次のように変更します。

private void Form1_Paint(object sender, PaintEventArgs e)
{
    Graphics g = e.Graphics;
    Point p1 = new Point(5 + xOffset,0);
    Point p2 = new Point(10 + xOffset, 5);
    Point p3 = new Point(5 + xOffset, 10);
    Point p4 = new Point(0 + xOffset, 5);
    Point[] ps = { p1, p2, p3, p4, p1 };
    g.DrawLines(Pens.Black, ps);
}
于 2010-04-23T17:46:01.233 に答える
0

使用Timerしてから、各ティックで再描画します。

于 2010-04-23T17:45:03.157 に答える