Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Mit canvas gezeichnetes "verschwinden" lassen (https://www.delphipraxis.net/89802-mit-canvas-gezeichnetes-verschwinden-lassen.html)

schrimm 5. Apr 2007 22:17


Mit canvas gezeichnetes "verschwinden" lassen
 
Ich probiere gerade eine Lebensanzeige für ein Spiel mit convas zu erzeugen.
ein Balken, der bei weniger Leben kleiner wird.
DAs mit dem Zeichnen habe ich auch geschafft, es teichnet je nach LP das Teil entsprechend lang
das Prob: das was es vorher gezeichnet hat ist noch sichtbar, kann man irgendwie das (es ist ein image) wieder komlett transparent machen, bevor es das neue malt?
mit cldefault das ganze ausfüllen, da wird es schwarz


[edit=Matze]Tippfehler im Titel korrigiert, damit das Thema leichter über die Suche auffindbar ist. MfG, Matze[/edit]

matashen 5. Apr 2007 22:20

Re: Mit convas gezeichnetes "verschwinden" lassen
 
Hallo,

da mußt du schon vorher den Untergrund also deine "Spielfläche" ablegen, bei neu zeichnen zuerst alte spielfläche wiederherstellen und Balken neu Zeichnen. Natürlich kannst du dazu auch nur einen Teil deines Bildes ablegen und später wiederherstellen z.B. den Bereich deines Balkens.

Nuclear-Ping 5. Apr 2007 22:21

Re: Mit convas gezeichnetes "verschwinden" lassen
 
Nimm ein temporäres Bitmap, in das du zeichnest, statt direkt auf das sichtbare Bitmap. Das tempBitmap leerst du vor jedem neuzeichnen mit .Assign (nil) (.Width und .Height musst du dann auch wieder neu setzen) und übergibst es nach dem Zeichnen dem sichtbaren Bitmap per .Assign (tempBitmap);

So wird das auch bei Spielen gemacht. Die ganze Szene wird erst in einen virtuellen Bildschirm gezeichnet / gerendert und dann einfach getauscht.

matashen 5. Apr 2007 22:28

Re: Mit convas gezeichnetes "verschwinden" lassen
 
Hi,

bei meinem Tip ging ich davon aus das schrimm das zu zeichnende Pic zuerst im Speicher anfertigt, bevor er es darstellt. Trotzdem ist es meines erachtens einfacher einzelne Teile des Temppics einzeln nur auszutauschen als alles komplett neu aufzubauen, kommt natürlich immer auch auf die Art des Spiels drauf an, welchen Weg man geht.

schrimm 5. Apr 2007 22:46

Re: Mit convas gezeichnetes "verschwinden" lassen
 
Na ok, ich habe jetzt einfach die Hindergrundfarbe jedes mal drüber gemalt, ehe ichd as neue male.
Ich hatte gehofft, es gibt einen befehl, wo mit man alle in diesem objekt gezeichneten convas löschen kann

Nuclear-Ping 5. Apr 2007 22:52

Re: Mit convas gezeichnetes "verschwinden" lassen
 
Drübermalen kann einen Flackereffekt zur Folge haben. Selbst wenn's bei dir nicht flackern sollte, auf einem anderen Rechner kann das schonwieder anders ausschauen oder bei dir anfangen, wenn du viele Objekte auf dem Bild zeichnest. Deswegen ist erstmal virtuell zeichnen und dann austauschen die saubere Lösung. Und btw: Es heisst Canvas, nicht Convas. ;)

Lifthrasir 6. Apr 2007 10:34

Re: Mit convas gezeichnetes "verschwinden" lassen
 
also wenn er nur per canvas zeichnet reicht es das TFormzu refreshen
Delphi-Quellcode:
 z.b. Form1.refresh;
dabei werden alerdings alle canvas'Objecte' gelöscht. Evtl. über 'n Timer in gesunden Intervallen refreshen und nach internen Zahlenangaben neu zeichnen lassen?!

Hoff ich konnt helfen

dajuhsa 24. Jun 2007 15:48

Re: Mit convas gezeichnetes "verschwinden" lassen
 
entscheide dich doch für ne backgr-farbe in dem balken und anstatt den balken zu verkleinern einfach den hintergrund vergrößern, z.B. Schwarz


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz