PaintBox



  • Hallo da draussen!

    Kann mir einer sagen, was ich falsch mache?!

    Ich möchte mit der PaintBox ein Gatter für ein Vier gewinnt spiel zeichnen. Allerdings stürzt mir das Programm beim Aufrufen jedes mal ab. Kann mir einer bitte sagen wo der Fehler liegt?

    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    //erstellt einen Rahmen (Quadrat)
    Form1->PB->Canvas->MoveTo(10,10);
    Form1->PB->Canvas->LineTo(10,240);
    Form1->PB->Canvas->LineTo(240,240);
    Form1->PB->Canvas->LineTo(240,10);
    Form1->PB->Canvas->LineTo(10,10);
    //zeichnet waagerechte Linien mit 5 Pixel Abstand
    for (int i = 0;i<=250;i+5)
    {
     Form1->PB->Canvas->MoveTo(1,i);
     Form1->PB->Canvas->LineTo(250,i);
    }
    
    }
    

    Vielen Dank schon mal!

    Eleonora



  • Das ist doch der Konstruktor, in dem das aufgerufen wird. Da gibt es wohl noch keinen Canvas für PB.
    Canvaszugriffe gehören in das OnPaint()-Ereignis des Forms, damit die Ausgabe auch wieder erfolgt, wenn ein anderes Fenster über der Form war, respektive das Form minimiert und wieder maximiert wird, usw.

    Grüße



  • Außerdem hast Du eine Endlosschleife programmiert:

    for (int i = 0;i<=250;i+5)
    

    Die Zeile muss heißen:

    for (int i = 0;i<=250;i+=5)
    

    Und ich hab' noch gesehen, dass TPaintBox eine eigenes OnPaint()-Ereignis hat. Also besser das nehmen.

    Grüße



  • Das mit der PaintBox funktioniert jetzt, und den Fehler mit der Endlosschleife habe ich beim Aufrufen auch bemerkt und gleich geändert.

    DANKE!

    Gruß


Anmelden zum Antworten