3 Stimmen

C#- Verschieben Sie eine Form zu einem Punkt, der auf halbem Weg von der Oberseite des Formulars ist

Hier muss ich einen Diamanten mit Hilfe der Drawlines-Methode erstellen und ihn horizontal entlang eines Pfades bewegen, der sich auf halbem Weg vom oberen Rand des Formulars befindet.

Ich habe einen Diamanten erstellt und er bewegt sich horizontal, aber ich möchte, dass er sich von einer Position aus bewegt, die auf halbem Weg vom oberen Rand des Formulars liegt.

Dies ist der Code zur Erstellung eines Diamanten,

    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;
    }

Ich kann es mit dem Timer bewegen und der folgende Code ist,

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

Bitte sagen Sie mir, wie ich den Diamanten auf einen Punkt bringen kann, der sich auf halbem Weg vom oberen Rand des Formulars befindet.


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;
}

Es zeigt einen Fehler an middleForm = Form1.Height / 2 y diamondMiddleOfTheForm = middleForm - middle

Ich entschuldige mich für meinen Fehler, wenn ich das, was Sie gesagt haben, nicht umgesetzt habe...

2voto

Derick Bailey Punkte 70483

Du musst zuerst die Höhe der Raute bestimmen. Nimm den höchsten Punkt der Raute: 0, und addiere den niedrigsten Punkt der Raute: 10

height = 10

dann suchen Sie die Mitte der Raute in vertikaler Richtung:

middle = height / 2

und suchen Sie dann die Mitte des Formulars:

middleForm = form.Height / 2

Berechnen Sie dann die Position der Raute, indem Sie sie von der Mitte des Formulars aus um die halbe Höhe der Raute "nach oben" verschieben:

diamondMiddleOfTheForm = middleForm - midddle

die Variable "diamondMiddleOfTheForm" gibt an, wohin die "y"-Werte verschoben werden sollen

        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);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X