![]() |
Schnell viele Rechtecke färben
Guten Abend,
ich will für ein 'Game of Life' etwa 5500 Rechtecke mit einer Farbe füllen. Wenn ich dass aber mache (per Floodfill) dauert es etwa 30 sec um alle Rechtecke zu zeichnen. Da es aber darum geht, Entwicklungen zu sehen, ist das entschieden zu lang. Hat jemand eine Idee wie ich das so verändern kann, dass die Zeichenzeit möglichst gering zu halten? ( < 1 sec) :wall: THXbyTOX [Edit: damit auch tommie-lie nichts mehr zu meckern hat :mrgreen: ] |
Re: Schnell viele Rechtecke färben
Sind die Rechtecke Nummeriert (Beispiel: shape1, shape2, shape3...)?
Dann könntest du eventuell folgendes machen, aber ich weiß nicht wie lange das dauert: (Kommt natürlich auf den Rechner an, wie lange er braucht)
Code:
Shape musst du natürlich ersetzen.
for i := 1 to 5500 do
TShape(FindComponent('Shape' + i)); end; |
Re: Schnell viele Rechtecke färben
Ich hab's bisher so gemacht, dass ich mir mit Moveto/Lineto schwarze Linien auf das Formular zeichne und dann die Farben aus einem 3D-Array auslese.
Ich hab's jetzt nicht ausprobiert, aber ich kann fast nicht glauben, dass es schneller geht, alle shapes suchen zu lassen, dann zu färben und dann noch auszugeben. Hat das schon mla jemand ausprobiert und kann mir sagen ob das so schnell wird, wie ich mir das vorstelle? Danke schon mal |
Re: Schnell viele Rechtecke färben
Zitat:
Wie sind denn die Rechtecke angeordnet? Ist das eigentlich eine große Fläche, die nur durch Linien unterteilt wurde? Dann kannst du den Hintergrund z.B. auf einmal zeichnen und anschließend die Linien rein. Oder du könntest versuchen, ob die API-Funktionen zur GDI ausreichend schnell sind, dafür gibt's dann die FloodFill() aus der windows.pas. Anschließend könnte man versuchen zunächst in einen Backbuffer zu zeichnen, ich weiß grad' nicht wie das mit dem Refreshes ist (gibt's evtl ein BeginUpdate bei der Komponente, auf die di zeichnest?). Ansonsten könnte man vielleicht umliegenden Code etwas optimieren, dafür müsste man den aber erstmal sehen. Edit: Und dann hat Luckie auch noch ein eigenes Game of Life geschrieben, und IIRC ist das sogar eines seiner wenigen VCL-Programme gewesen (oder war das irgendwas anderes?!?). Da kannst du vielleicht das ein oder andere Prinzip abschauen. |
Re: Schnell viele Rechtecke färben
Vielen Dank schon mal. Ich hab mir grad von Luckie sein 'Life of Luckie' runtergeladen. Ich glaub, dass ich da genug Zeug find um das Problem zu lösen - und noch Lösungen für Probleme finde, die ich bis jetzt noch nicht hatte :mrgreen: .
Danke für für die Hinweise und @ Luckie :love: |
Re: Schnell viele Rechtecke färben
Lass mal das mit dem Floodfill - das ist ja nicht das Schnellste, denn es sucht ja nach dem Bereich, der gefüllt wird - nimm mal lieber FillRec.
|
Re: Schnell viele Rechtecke färben
Zitat:
|
Re: Schnell viele Rechtecke färben
1. nur die sichtbaren zeichnen.
2. du kennst canvas.rectangel ? |
Re: Schnell viele Rechtecke färben
Moin!
Zitat:
MfG Muetze1 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:14 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 by Thomas Breitkreuz