Hallo ich bins wieder. Habe gerade ein kleines Zeichenprogramm erstellt. Mein Problem darin besteht das ich keinen "Neu" Button habe. Ich brauche einfach nur einen Button der alles was in meiner Paintbox ist wieder löscht. Ich komm einfach nicht darauf. Mit "Clear" hab ich auch schon ausprobiert aber dann kommt eine Fehlermeldung. Es wäre nett wenn ihr mir helfen könntet.
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
Dann solltest Du besser ein TImage verwenden, da die Inhalte einer TPaintBox nicht gespeichert sind und beim Repaint (Neuzeichnen z.B. eines vorher durch ein anders Fenster verdeckten bereiches)...
alles was in meiner Paintbox ist wieder löscht
Sollte mit der Methode TPaintBox.Repaint(); funktionieren, beim Neuzeichnen wird übrigens das Ereignis OnPaint ausgelöst.
Beim TImage würde man einfach die gesammte Bildfläche mit einem ausgefüllten Rechteck der gewünschten Hintergrundfarbe übermalen.
CU Borlander
*Sollte mit der Methode TPaintBox.Repaint(); funktionieren*
Funktioniert nicht. Es wird mir eine Fehlermeldung gezeigt (Diese Form des Methodenaufrufs ist nur für Klassenmethoden erlaubt)
Wenn Du das 1:1 übertragen hast, kann das auch nicht funktionieren...
TPaintBox steht hier ganz allgemein für eine beliebige Componente vom Typ TPaintBox. Wenn Deine PaintBox beispielsweise den Namen PaintBox1 hat, dann verwendest Du
PaintBox1.Repaint();
CU Borlander
Klappt leider auch nicht. Kommt zwar keine Fehlermeldung aber es passiert nix.
Wenn ich zur Laufzeit auf den Button klicke kommt einmal ganz kurz nur so ein Flackern und mehr nicht. Es ist alles noch da. Ich kann ja mal den Quelltext posten wenn man das darf.
Die PaintBox muss ja auch nicht unbedingt neu gemacht werden. Da der Hintergrund des Programms sowieso weiß ist kann der Button auch den Hintergrund der PaintBox weiß "übermalen". Dummerweise weiß ich nicht wie das geht. Oder ein Radiergummi das Dinge weiß übermalt wäre auch ganz nett. Im Moment zeichnet mein Programm pro Pixel einen Punkt. Was kann ich machen damit er größer oder dicker zeichnet?
TCanvas.FillRect(Rechteck: TRect);
Was kann ich machen damit er größer oder dicker zeichnet?
Ich vermute mal Du arbeiteste derzeit mit der Pixels Eigenschaft von TCanvas. Damit kannst Du nur jeweis einen einzelnen Pixel manipulieren.
Zum Zeichnen von Linien, kannst Du TCanvas.LineTo(x,y: Integer) verwenden.
Die Farbe und Dicke kannst Du über die Eingenschaft TCanvas.Pen bestimmen.
Würde so arbeiten:
Beim drücken der Maustaste wird mit dem Zeichnen begonnen.
Beim Bewegen der Maus wird gezeichnet, sofern das Zeichnen gerade aktiviert ist.
Beim Loslassen der Maustaste wird das Zeichnen beendet.
Das darfst Du erst mal selbst probieren umzusetzen, bei Fragen stehe ich gerne wieder zur Verfügung...
CU Borlander
Hab das mal schnell ausprobiert, also bei mir ist der Inhalt nach einem Repaint weg. Ist aber noch mit der PaintBox, nicht mit dem Image?
Zeichnest Du das dargestellte evtl. im OnPaint Ereignis?
Quelltext posten wenn man das darf.
Das wäre natürlich sehr praktisch...