![]() |
Image wieder blank machen
Hallo,
mein Delphi-Programm soll wie folgt funktionieren: Es besteht aus einem Image-Feld, und in procedure TForm1.Timer1Timer(Sender: TObject); ist folgendes zu finden:
Code:
, wobei zugleich gilt:
image1.canvas.ellipse(10+6*sekunde,10,15+6*sekunde,15);
Code:
D.h., jede Sekunde kommt ein neuer Kreis hinzu, und nach 60 Sekunden sind 60 Kreise gemalt worden. Nun sollen alle Kreise wieder verschwinden und die Prozedur von vorne losgehen.
sekunde:=sekunde+1;
Aber wie mache ich das? Gruß, Avicenna |
Re: Image wieder blank machen
einfach das Image wieder mit nem Recheck überzeichnen...
Also:
Delphi-Quellcode:
so würd ich's machen...
procedure image_blank;
var bc,pc:Tcolor; begin with Form1.Image1.canvas do begin pc:=Pen.Color; //alte Farben speichern bc:=Brush.Color; Pen.Color:=clwhite; Brush.Color:=clwhite; Rectangle(0,0,image1.Width, image1.Height); //übermalen Pen.Color:=pc; //alte Farben wieder zuweisen Brush.Color:=bc; end; end; |
Re: Image wieder blank machen
Danke für deine Antwort, aber du verwendest zu viele Sachen, die ich noch gar nicht gelernt habe (z. B. with-do). Die Lehrerin beschrieb es so: Man muss das Rechteck einfach wieder weiß machen.
Kennt jemand einen einfacheren Weg als der von Bastler? |
Re: Image wieder blank machen
Zitat:
|
Re: Image wieder blank machen
Hi,
Wenns statt weiß auch transparent sein darf dann empfehle ich:
Delphi-Quellcode:
:)
Image1.Picture.Bitmap.Assign(nil);
EDIT: Wobei wenn du direkt auf das Canvas des Images malst dürfte sogar ein Image1.Invalidate; reichen. Gruß Neutral General |
Re: Image wieder blank machen
Danke für eure Antworten, die von Neutral General genannten Codes scheinen die optimalsten zu sein, bloß stehe ich jetzt vor dem nächsten Problem:
Wie soll ich dem Programm vermitteln, dass es dann blank werden soll, wenn 60 Kreise gemalt wurden? |
Re: Image wieder blank machen
Einfach im onTimer schauen, wie viele Kreise schon gemalt worden sind.
|
Re: Image wieder blank machen
Um auf Apollonius Antwort zurückzukommen. Um jetzt diesen Schrittt zuwiederholen musst du ne eigene Prozedure schreiebn und ne If - then anweisung:
Delphi-Quellcode:
{eigene prozedure}
procedure Zeichnen; begin Image1.Canvas.... end; {Timer} procedure TForm1.Timer1Timer(Sender : TObject) begin Zeichnen; If Sekunde = Gewünschte Zahl* then begin Image1.Invalidate; Zeichnen; end; end; |
Re: Image wieder blank machen
Zitat:
Delphi-Quellcode:
var: sekunde : Integer;
[...] sekunde := 0; [...] procedure TForm1.Timer1Timer(Sender : TObject) begin if sekunde = 59 then begin Image1.Invalidate; sekunde := 0; end image1.canvas.ellipse(10+6*sekunde,10,15+6*sekunde,15); inc(sekunde); end; |
Re: Image wieder blank machen
Müsste Sekunde nicht 60 sein, bevor neu gezeichnet wird? Sonst würde IMHO der 60. Kreis nicht mehr gezeichnet.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz