3

ここでは、drawlines メソッドを使用してひし形を作成し、フォームの上部から半分のパスに沿って水平に移動させる必要があります。

ひし形を作成したら横に動いているのですが、フォームの上半分から動かしたいです。

これは、ダイヤモンドを作成するためのコードです。

    private void Form1_Paint(object sender, PaintEventArgs e)
    {

        Graphics g = e.Graphics;
        Point p1 = new Point(5+x, 0);
        Point p2 = new Point(10+x, 5);
        Point p3 = new Point(5+x, 10);
        Point p4 = new Point(0+x, 5);
        Point[] ps = { p1, p2, p3, p4, p1 };
        Pen p_yellow = new Pen(Color.Yellow, 5);
        g.DrawLines(p_yellow, ps);
        this.BackColor = System.Drawing.Color.DarkBlue;
    }

タイマーを使用して移動させることができます。コードは次のとおりです。

    private void timer1_Tick(object sender, EventArgs e)
    {
        if (x < 500)
            x += 2;
        else
            timer1.Enabled = false;
        this.Invalidate(); 
    }

ダイヤモンドをフォームの頂点から半分の位置に持ってくる方法を教えてください。


private void Form1_Paint(object sender, PaintEventArgs e)
{
    int height = 10;
    int middle = height / 2;
    int middleform = Form1.height / 2;
    int diamondMiddleOfTheForm;
    diamondMiddleOfTheForm = middleForm - middle;

    Graphics g = e.Graphics;
    Point p1 = new Point(5 + x, 0 + diamondMiddleOfTheForm);
    Point p2 = new Point(10 + x, 5 + diamondMiddleOfTheForm);
    Point p3 = new Point(5 + x, 10 + diamondMiddleOfTheForm);
    Point p4 = new Point(0 + x, 5 + diamondMiddleOfTheForm);
    Point[] ps = { p1, p2, p3, p4, p1 };
    Pen p_yellow = new Pen(Color.Yellow, 5);
    g.DrawLines(p_yellow, ps);
    this.BackColor = System.Drawing.Color.DarkBlue;
}

と でエラーが表示されmiddleForm = Form1.Height / 2ますdiamondMiddleOfTheForm = middleForm - middle

あなたが言ったことを実装する際に何かをした場合、私の間違いをお詫びします...

4

1 に答える 1

2

まず、ダイヤモンドの高さを見つける必要があります。ひし形の最高点: 0、ひし形の最低点: 10 を追加します。

height = 10

次に、ダイヤモンドの中央を垂直方向に見つけます。

middle = height / 2

次に、フォームの中央を見つけます。

middleForm = form.Height / 2

次に、フォームの中央からダイヤモンドの高さの半分だけ「上」に移動して、ダイヤモンドの位置を計算します。

diamondMiddleOfTheForm = middleForm - midddle

「diamondMiddleOfTheForm」変数は、「y」値をオフセットする場所を示します

        Point p1 = new Point(5+x, 0+diamondMiddleOfTheForm);
        Point p2 = new Point(10+x, 5+diamondMiddleOfTheForm);
        Point p3 = new Point(5+x, 10+diamondMiddleOfTheForm);
        Point p4 = new Point(0+x, 5+diamondMiddleOfTheForm);
于 2010-04-24T00:55:04.343 に答える