Hallo Experten,
ich habe folgendes Problem. Ich zeichne mittels Canvas ein Bild auf einer TForm, bestehend aus 64x64 Rectangles. Das ganze sollte möglichst flott und mit möglichst wenig Prozessorlast geschehen. Es kann sein, dass das Frame mit den 4096 Rechtecken mit mehr als 30 FPS aktualisiert werden muss. Hinzu kommt, dass von den 64x64 Frames zeitgleich 4 auf der Form dargestellt werden.
Nun habe ich das Problem, dass viele Rechner bei hohen Frameraten hier schon derbe in die Knie gehen und bei 100 % Prozessorlast hängen.
Nun zu meiner Frage: Es ist mir klar, dass die CPU hier immer Grenzten setzt, aber wie kann ich am effektivsten vorgehen? Momentan läuft einfach eine geschachtelte for-Schleife:
Ist es evtl. von Vorteil erst in ein Bitmap oder dergleichen zu zeichnen und dann die Darstellung zu übernehmen?
Gibt es effektivere Methoden als Canvas->Rectangle ?
Gruß, Bodo
Edit: habe einige Zeilen noch aus dem Code entfernt, natürlich wird auf xoff und yoff noch rectsize addiert...
ich habe folgendes Problem. Ich zeichne mittels Canvas ein Bild auf einer TForm, bestehend aus 64x64 Rectangles. Das ganze sollte möglichst flott und mit möglichst wenig Prozessorlast geschehen. Es kann sein, dass das Frame mit den 4096 Rechtecken mit mehr als 30 FPS aktualisiert werden muss. Hinzu kommt, dass von den 64x64 Frames zeitgleich 4 auf der Form dargestellt werden.
Nun habe ich das Problem, dass viele Rechner bei hohen Frameraten hier schon derbe in die Knie gehen und bei 100 % Prozessorlast hängen.
Nun zu meiner Frage: Es ist mir klar, dass die CPU hier immer Grenzten setzt, aber wie kann ich am effektivsten vorgehen? Momentan läuft einfach eine geschachtelte for-Schleife:
Code:
for(z=0;z<SPALTE*2-rowdecr;z++){ for(s=0;s<SPALTE*2-1;s++){ setRGB(z,s,0); sum=(b<<16)|(g<<8)|r; TempBrush->Color=sum; //now draw rectangle Canvas->Brush=TempBrush; Canvas->Rectangle((xoff),(yoff),(xoff+rectsize+1),(yoff+rectsize+1));} }
Gibt es effektivere Methoden als Canvas->Rectangle ?
Gruß, Bodo
Edit: habe einige Zeilen noch aus dem Code entfernt, natürlich wird auf xoff und yoff noch rectsize addiert...
Comment