Canvas leeren?



  • Hallo!

    Ich habe ein Fenster vom Typ TForm und im Fenster einen Zeichenbereich vom Typ TImage.
    Wenn der Benutzer im Zeichenbereich einen Mausklick tätigt, dann soll eine Linie vom linken unteren Eck des Zeichenbereichs zum Klickpunkt gezeichnet werden.

    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
    	: TForm(Owner)
    {
    
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::zeichenbereichMouseDown(TObject *Sender, TMouseButton Button,
    		  TShiftState Shift, int X, int Y)
    {
    	zeichenbereich->Canvas->MoveTo(0,zeichenbereich->Height);
    	zeichenbereich->Canvas->LineTo(X,Y);
    
    }
    //---------------------------------------------------------------------------
    

    Wenn bereits eine Linie gezeichnet wurde und der Benutzer wieder auf den Zeichenbereich klickt, dann soll die alte Linie verschwindten und nur die neue Linie sichtbar sein. Wie mache ich das?



  • Hallo

    Entweder speicherst du die Koordinaten der Linie zwischen und überzeichnest im nächsten Event vor der neuen Linie die alte Linie mit der Hintergrundfarbe, oder du überdeckst das ganze Canvas mit der Rechteck-Methode in der Hintergrundfarbe.

    bis bald
    akari


Anmelden zum Antworten