Canvas Kreis zeichnen & löschen



  • hi,

    ich zeichne nen Kreis über Canvas

    Form1->Canvas->Pen->Color= clBlack;
    Form1->Canvas->Pen->Mode = pmMask;

    Dies zeichnet nen Kreis mit schwarzem Kreisbogen und leerem "Brush", Innenleben.

    Wie bekomme ich es hin, dass dieser Kreis wieder gelöscht wird.
    Also nur den Kreisbogen,
    wie muss ich die Funktionen Canvas->Pen->Mode benutzen, hab schon einiges durch, aber irgendwie haut das net hin, vielleicht weiß da von euch jemand rat..

    Wäre super!!

    Mike



  • Hallo

    nochmal genau mit der selben Funktion und Parametern und der Hintergrundfarbe überzeichnen

    bis bald
    akari



  • hab es so probiert, das tut aber sich beim löschen nix

    void Kreis::clr (TCanvas *tc_)
    {
         tc_->Pen->Color = clBtnFace;
         tc_->Pen->Mode = pmMask;
         tc_->Pen->Width = 1;
         tc_->Ellipse (x-radius,y-radius,x+radius,y+radius);
    }
    
    void Kreis::zeichne (TCanvas *tc)
    {
         tc->Pen->Color = RGB(180,180,180);
         tc->Pen->Mode = pmMask;
         tc->Pen->Width = 1;
         tc->Ellipse (x-radius,y-radius,x+radius,y+radius);
    }
    

    wíe muss die syntax lauten?
    kann mir jemand nen tipp geben?



  • Hallo

    die Syntax ist in Ordnung, sonst würde sich ja dein Compiler beschweren.
    Was du meinst ist die Semantik.

    Ich kann in deinem Ausschnit keinen Fehler erkennen. Überprüf mal ob clr überhaupt aufgerufen wird und ob das richtige Control übergeben wird.

    bis bald
    akari



  • ja, sorry, natürlich die semantik!

    void __fastcall TForm1::Button4Click(TObject *Sender)
    {
    Form1->Canvas->Pen->Color = RGB(0,255,0);
    Form1->Canvas->Pen->Mode  = pmMask;
    Form1->Canvas->Pen->Width = 1;
    Form1->Canvas->Ellipse(400,400,200,200);
    //Form1->Canvas->Pen->Color = clBtnFace;
    //Form1->Canvas->Pen->Mode  = pmCopy;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button5Click(TObject *Sender)
    {
    Form1->Canvas->Pen->Color = clBtnFace;
    Form1->Canvas->Pen->Mode  = pmMask;
    Form1->Canvas->Pen->Width = 1;
    Form1->Canvas->Ellipse(400,400,200,200);
    }
    

    das hier geht auch net..

    😞



  • Hallo

    ich habe gerade keinen BCB hier, aber das kommt mir komisch vor

    Form1->Canvas->Pen->Color= clBlack;
    Form1->Canvas->Pen->Mode = pmMask;

    Dies zeichnet nen Kreis mit schwarzem Kreisbogen und leerem "Brush", Innenleben.

    wenn du einen leeren Brush willst, must du doch eigentlich

    Form1->Canvas->Pen->Color= clBlack;
    Form1->Canvas->Brush->Style = bsClear
    

    schreiben. Sicher das der Mode bei dir da richtig ist?

    bis bald
    akari



  • ja, ich kapier das ja auch net!

    der Brush macht nix,
    es geht ohne und mit net..

    des is komisch!



  • also so funzt es für die Farben schwarz und weiß

    void __fastcall TForm1::Button4Click(TObject *Sender)
    {
    Form1->Canvas->Brush->Style = bsClear;
    Form1->Canvas->Pen->Color= clBlack;
    Form1->Canvas->Pen->Mode  = pmCopy;
    Form1->Canvas->Pen->Width = 1;
    Form1->Canvas->Ellipse(400,400,200,200);
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button5Click(TObject *Sender)
    {
    Form1->Canvas->Brush->Style = bsClear;
    //Form1->Canvas->Pen->Color = clBtnFace;
    Form1->Canvas->Pen->Color = clWhite;
    Form1->Canvas->Pen->Mode  = pmCopy;
    Form1->Canvas->Pen->Width = 1;
    Form1->Canvas->Ellipse(400,400,200,200);
    }
    

    aber die farbe mit dem gleichen hintergrund geht irgendwie net, also das löschen des kreisbogens..



  • Oki,

    mit obigem Code funktioniert es doch,
    es muss aber

    Form1->Canvas->Pen->Mode  = pmCopy;
    

    stehen!

    Danke für deine Hilfe Akari!


Anmelden zum Antworten