![]() |
Canvas "verwischt" ... wie kann man es ändern?
Hallo ! Hab ein kleines Spiel nach der Art von Bomberman oder Bomberkids( TR) gemacht. Ich lade Bitmapdateien auf ein Canvas. Wenn ich das Spielfeldfenster nun aber aus dem Bildschirm schiebe "verwischt" sich das Spielfeld! Warum ist das so? Wie kann ich es ändern???
Hoffe ihr könnt mir helfen... Gruß Florian |
Re: Canvas "verwischt" ... wie kann man es ändern?
:hi:
Alles auf ein Bitmap, und im OnPaint alles auf die Form... mfg Tobias |
Re: Canvas "verwischt" ... wie kann man es ändern?
Im OnPaint- Ereigniss habe ich es schon... Wie meinst du alles in ein Bitmap?
Gruß Flo |
Re: Canvas "verwischt" ... wie kann man es ändern?
|
Re: Canvas "verwischt" ... wie kann man es ändern?
Ah danke erstmal... habe meinen Quelltext nun entsprechend verändert... hab eine Paintbox Komponente erstellt mit der Größe des Spielfeldes jedoch zeichne ich ja in das bmp und nicht in die Paintbox...darum ist das Fenster leer! 'denkfehler?!'
Gruß Flo |
Re: Canvas "verwischt" ... wie kann man es ändern?
Du musst auch das BMP auf die Paintbox kopieren. Siehe meineen Artikel.
|
Re: Canvas "verwischt" ... wie kann man es ändern?
Genau aber wie? Habe das nicht in deiner Beschreibung gefunden :?
Gruß Flo |
Re: Canvas "verwischt" ... wie kann man es ändern?
Zitat:
Delphi-Quellcode:
procedure TForm1.PaintBox1Paint(Sender: TObject);
begin { bei Bedarf neu zeichnen } BitBlt(PaintBox1.Canvas.Handle, 0, 0, bmp.Width, bmp.Height, bmp.Canvas.Handle, 0, 0, SrcCopy); end; |
Re: Canvas "verwischt" ... wie kann man es ändern?
Ja nur die PaintBox bleibt bei mir trotzdem leer... hatte zuvor lauter prozeduren die auf der Canvas des Form1 ein Bitmap drauf gemalt haben. Nun habe ich die PaintBox1 erstellt, bmp global deklariert vom Typ Bitmap und alles Form1.Canvas.Draw(...) durch bmp.Canvas.Draw(..) ersetzt.. klappt aber leider noch nicht. Woran kann das liegen?
Gruß Flo |
Re: Canvas "verwischt" ... wie kann man es ändern?
Woher soll ich das wissen? Mit bmp.Canvas.Draw zeichnest du auch immer nur auf das Bitmap im Speicher. Wenn du es sehen willst, musst du es auch irgendwann mal auf die Paintbox kopieren.
|
Re: Canvas "verwischt" ... wie kann man es ändern?
@Wuaegner: hast du die größe von "bmp" nach dem createn auch gesetzt???? ansonsten bleibt diese auf 0 pixel breite und höhe und somit wird nix in die Tbitmap gezeichnet
|
Re: Canvas "verwischt" ... wie kann man es ändern?
Ja die Größe von bmp habe ich festgelegt. Wie kopiert man das bmp in die Paintbox?
Gruß Flo |
Re: Canvas "verwischt" ... wie kann man es ändern?
:hi:
sieh bei Luckie oben. mfg Tobias |
Re: Canvas "verwischt" ... wie kann man es ändern?
In dem Artikel steht ein kompletter Sourcecode, den man eins zu eins kopieren kann. Nur das was gezeichnet werden soll muss man eben anpassen.
|
Re: Canvas "verwischt" ... wie kann man es ändern?
Nein nicht ganz, da in meinem Programm nicht auf ButtonClick etwas gezeichnet werden soll sondern ständig, mit jedem Tastendruck etwas verändert wird, übermalt wird. An dem hängt es bei mir noch...
Gruß Flo |
Re: Canvas "verwischt" ... wie kann man es ändern?
Das ist doch total egal, ob nun bei Tastendruck oder in einem Timer-Ereigniss oder sonst wo.
|
Re: Canvas "verwischt" ... wie kann man es ändern?
He ganz ruhig ich habe lediglich eine Frage gestellt, viell. für einen der Delphi schon länger macht war sie dumm oder sonst was, aber ich wusste es wirklich nicht.
Es funktioniert nun soweit... nur wird meine PaintBox nun nach jedem Tastendruck neugezeuchnet, da ich ja ein rechteckiges Bitmap ( Spieler1, 2) über das Spielfeld bewege und so nach jedem Tastendruck natürlich die Paintbox aktualisieren muss, was aber glaub ich nicht sp sinnvoll ist, es kommt nämlich nach jedem Tastendruck ein "Flimmerstreifen", kurz aber störend. Könnt ihr mir dazu noch einen Tip gehen das zu verbessern? Wäre cool! Gruß Flo |
Re: Canvas "verwischt" ... wie kann man es ändern?
Niemand eine Idee?
Gruß Flo |
Re: Canvas "verwischt" ... wie kann man es ändern?
Liste der Anhänge anzeigen (Anzahl: 2)
Hi, ich habe das Problem, das bei meiner Anwendung eine Tabelle in ein Stringgrid gezeichnet werden soll. Das mit der Paintbox funktioniert soweit auch wunderbar, allerdings ist diese hinter dem Stringgrid und somit nicht sichtbar. Außerdem soll in der Tabelle noch "gearbeitet" werden können. Kann mich da noch Zellen markieren wenn das BMP vor dem Stringgrid liegt, und ist das BMP überhaupt durchsichtig?
Weiss da jemand einen Rat für mich. Oder hat jemand eine andere Idee, wie ich das Problem lösen kann? Danke.. (Hab mal Bilder des Stringgrids angehängt) [edit] Hab mal eine eigene Topic aufgemacht [/edit] |
Re: Canvas "verwischt" ... wie kann man es ändern?
Hab nun den "Flimmerstrich" wegbekommen. Ich mache nicht mehr REPAINT sondern löses direkt Canvas.OnPaint aus. Jetzt klappt es wunderbar.
Nochmal danke für die Tips Gruß Flo |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:07 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