Canvas auf TPanel



  • Hallo,

    ich möchte gerne den Canvas von TPanel nutzen. Dazu habe ich auch schon einiges versucht und den Hinweis hier im Forum gefunden, die Property Canvas public zu machen. Aber mit dem BCB 6.0 wird der Code zwar korrekt compiliert, aber auf dem Panel wird nichts angezeigt.

    class TMyPanel : public TPanel
    {
    public:
        __fastcall TMyPanel(TComponent* Owner);
    
        __property Canvas;
    };
    
    __fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
    {
        TMyPanel *p = new TMyPanel(Owner);
        p->Parent = this;
        p->Canvas->Pen->Color = clRed;
        p->Canvas->Pen->Width = 2;
        p->Canvas->Ellipse(5,5,20,20);
    
        TImage *i = new TImage(Owner);
        i->Parent = this;
        i->Top = 50;
        i->Left = 100;
        i->Canvas->Pen->Color = clRed;
        i->Canvas->Pen->Width = 2;
        i->Canvas->Ellipse(5,5,60,30);
    }
    

    Ein Test mit einem TImage funktioniert wunderbar.
    Wo liegt der Fehler beim TPanel, was ist falsch, was habe ich vergessen?

    Danke für eure Antworten.



  • Hallo

    wenn der Konstruktor des Panels ausgeführt wird, wird das Panel auch noch gar nicht dargestellt. Folglich werden alle Zeichenoperationen, die du im Konstruktor ausfürhst, ignoriert und zusätzlich noch überzeichnet, wenn das Panel dann wirklich durch das zuweisen von Parent und das Anzeigen des Forms angezeigt wird.

    Du must die methode Paint() ableiten und dort deine Zeichenoperationen ausführen.

    bis bald
    akari



  • akari schrieb:

    Du must die methode Paint() ableiten und dort deine Zeichenoperationen ausführen.

    That's it.
    Herzlichen Dank für die schnelle Hilfe.

    bis denn
    SomeOne


Anmelden zum Antworten