AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Schnell viele Rechtecke färben
Thema durchsuchen
Ansicht
Themen-Optionen

Schnell viele Rechtecke färben

Ein Thema von Nikolas · begonnen am 16. Apr 2004 · letzter Beitrag vom 19. Apr 2004
Antwort Antwort
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#1

Schnell viele Rechtecke färben

  Alt 16. Apr 2004, 21:38
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)

THXbyTOX

[Edit: damit auch tommie-lie nichts mehr zu meckern hat ]
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Schnell viele Rechtecke färben

  Alt 16. Apr 2004, 21:44
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:
for i := 1 to 5500 do
    TShape(FindComponent('Shape' + i));
end;
Shape musst du natürlich ersetzen.
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Schnell viele Rechtecke färben

  Alt 16. Apr 2004, 21:51
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
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#4

Re: Schnell viele Rechtecke färben

  Alt 16. Apr 2004, 21:54
Zitat von Toxman:
( > 1 sec)
Wenn es 30 Sekunden dauert, hast du doch, was du willst
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.
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Schnell viele Rechtecke färben

  Alt 16. Apr 2004, 22:22
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 .

Danke für für die Hinweise
und
@ Luckie
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.164 Beiträge
 
Delphi 12 Athens
 
#6

Re: Schnell viele Rechtecke färben

  Alt 16. Apr 2004, 22:26
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#7

Re: Schnell viele Rechtecke färben

  Alt 17. Apr 2004, 19:42
Zitat von Toxman:
@ Luckie
Also soweit ich weiß hat er 'ne Freundin, da musst du dich wohl hinten anstellen...
  Mit Zitat antworten Zitat
Gandalfus

Registriert seit: 19. Apr 2003
407 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Schnell viele Rechtecke färben

  Alt 18. Apr 2004, 11:16
1. nur die sichtbaren zeichnen.
2. du kennst canvas.rectangel ?
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#9

Re: Schnell viele Rechtecke färben

  Alt 19. Apr 2004, 14:35
Moin!

Zitat von tommie-lie:
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.
Das TCanvas.FloodFill() ruft auch nur die WinAPI Funktion ExtFloodFill() auf, somit ist es das gleiche...

MfG
Muetze1
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:36 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