Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wie lösch ich eine Bitmap aus einer Paintbox?? (https://www.delphipraxis.net/129389-wie-loesch-ich-eine-bitmap-aus-einer-paintbox.html)

legalex 18. Feb 2009 09:15


Wie lösch ich eine Bitmap aus einer Paintbox??
 
hi,
gibt es einen einfachen Befehl wie ich eine Bitmap aus ner paintbox löschen kann?? habs schon mit - X ist das Objekt welches die Bitmap enthält - X.Destroy oder auch X.Free versucht. sowohl im forum als auch in google find ich nichts!
vllt kann mir ja hier einer weiter helfen. ich bedanke mich schon mal im voraus für konstruktive vorschläge ;)

mfg

toms 18. Feb 2009 09:19

Re: Wie lösch ich eine Bitmap aus einer Paintbox??
 
Hallo

Sollte so gehen:
Delphi-Quellcode:
PaintBox1.Canvas.FillRect(PaintBox1.ClientRect);

legalex 18. Feb 2009 10:08

Re: Wie lösch ich eine Bitmap aus einer Paintbox??
 
hab hier nen timer... der soll in jedem intervall eine bitmap erstellen und dann wieder löschen... die bitmap soll sich also mit der zeit in der paintbox nach unten bewegen.. das problem ist halt nur das ich die bitmaps nicht gelöscht kriege

toms antwort funktioniert nicht... da werden dann überhaupt keine bitmaps mehr angezeigt!

Bemerkung: TetrisBox ist die Paintbox ;)

Delphi-Quellcode:
procedure TForm1.TimerTimer(Sender: TObject);
begin
Brix4 := TBitmap.Create;
Brix4.LoadFromFile(Random_Parts);
Tetrisbox.Canvas.Draw(240,y,brix4);
y:=y+30;
Brix4.Canvas.FillRect(clientrect);
//TetrisBox.Canvas.FillRect(TetrisBox.ClientRect);
if y >= 400 then
  Timer.Enabled := False;
end;

himitsu 18. Feb 2009 10:15

Re: Wie lösch ich eine Bitmap aus einer Paintbox??
 
dieser Befehl löscht/übermalt die gesamte PaintBox, also mußt du das vorm Neuzeichnen deines Bildes machen :zwinker:

oder du übermalst nur den Teil, welche gelöscht werden soll ... die Position des Rechteckes kannst du ja selbst bestimmen.

PS: vergiß nicht die Farbe zu setzen, bevor du löschts (vorallem Brush.Color)

Delphi-Quellcode:
Brix4 := TBitmap.Create;
Brix4.LoadFromFile(Random_Parts);
TetrisBox.Canvas.BrushColor := {TForm1.}Color;
TetrisBox.Canvas.FillRect(TetrisBox.ClientRect);
Tetrisbox.Canvas.Draw(240,y,brix4);
y:=y+30;
PS: wird dein Brix4 (TBitMap) auch irgendwann wieder freigegeben?

legalex 18. Feb 2009 10:20

Re: Wie lösch ich eine Bitmap aus einer Paintbox??
 
was meinst du mit freigegeben? ;)

DeddyH 18. Feb 2009 10:23

Re: Wie lösch ich eine Bitmap aus einer Paintbox??
 
Wenn man Speicher anfordert, sollte man den auch irgendwo wieder freigeben, sonst hat man bald keine Freunde mehr unter seinen Anwendern ;)

Meflin 18. Feb 2009 10:31

Re: Wie lösch ich eine Bitmap aus einer Paintbox??
 
Zitat:

Zitat von DeddyH
Wenn man Speicher anfordert,

was unter anderem immer dann passiert, wenn du ein .Create aufrufst ;)
Zitat:

Zitat von DeddyH
sollte man den auch irgendwo wieder freigeben

was dann wiederum durch .Free des selben Objekts geschieht.

nuclearping 18. Feb 2009 10:34

Re: Wie lösch ich eine Bitmap aus einer Paintbox??
 
Normalerweise macht man solche Animationen, wie in deinem Fall, mit Puffer-Bitmaps. Sonst wirst du nicht glücklich werden.

legalex 18. Feb 2009 10:36

Re: Wie lösch ich eine Bitmap aus einer Paintbox??
 
Zitat:

Zitat von himitsu
oder du übermalst nur den Teil, welche gelöscht werden soll ... die Position des Rechteckes kannst du ja selbst bestimmen.

PS: vergiß nicht die Farbe zu setzen, bevor du löschts (vorallem Brush.Color)

wie würde denn der code dazu aussehen... krieg das irgendwie nicht gebacken :P

nuclearping 18. Feb 2009 10:40

Re: Wie lösch ich eine Bitmap aus einer Paintbox??
 
Zitat:

Zitat von legalex
krieg das irgendwie nicht gebacken :P

Irgendwie hat man auch den Eindruck, du bemühst dich nicht wirklich?

Denn die Antwort steht doch schon hier: http://www.delphipraxis.net/internal...002915#1002915 :gruebel:

himitsu 18. Feb 2009 10:45

Re: Wie lösch ich eine Bitmap aus einer Paintbox??
 
das mit der Farbe hatte ich eigentlich schon gezeigt.

Delphi-Quellcode:
var Brix4: TBitMap;
  Rect: TRect;

Brix4 := TBitmap.Create;
Brix4.LoadFromFile(Random_Parts);
//Rect.Left  := 0;              // alles selber setzen
//Rect.Top   := 0;
//Rect.Right := TetrisBox.Width;
//Rect.Bottom := y - 1;
Rect := TetrisBox.ClientRect;    // oder etwas kürzer
Rect.Bottom := y - 1;

TetrisBox.Canvas.BrushColor := Color;
TetrisBox.Canvas.FillRect(Rect);
Tetrisbox.Canvas.Draw(240, y, Brix4);

Brix4.Free;
y := y + 30;
wie gesagt, du kannst für FillRect die Zeichenposition selbst festlegen und mußt dort nur den Bereich angeben, welcher gemalt werden soll.


PS: verändert sich Random_Parts wärend das Bild runterrutscht?
wenn nicht, dann könntest du Brix4 nur am Anfang erstellen (.Create) und laden (.LoadFromFile) und ganz am Ende erst wieder freigeben (.Free) ... so wie es jetzt wird, muß das Bild ja bei jedem Schritt neu erstellt, geladen und freigegeben werden.

legalex 18. Feb 2009 11:36

Re: Wie lösch ich eine Bitmap aus einer Paintbox??
 
soo... vielen dank!!! klappt jetzt..
weiß einer noch wie man die bitmaps bewegen kann mit der tastatur...
shapes bewegt man ja mit "Shp.Top := Shp.Top+1", wenn ich mich nicht irre... aber bei bitmaps gibts ja nicht die option "top".

himitsu 18. Feb 2009 11:47

Re: Wie lösch ich eine Bitmap aus einer Paintbox??
 
nur eine Frage pro Thread :warn:

[flüster]
Delphi-Quellcode:
.Canvas.Draw(x, y, Brix4);
veränder einfach X und Y :zwinker:
[/flüster]


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:24 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