Registriert seit: 7. Jul 2008
15 Beiträge
Delphi 7 Enterprise
|
pixelweises Zeichnen von PaintBox beschleunigen
9. Jul 2008, 18:01
Hallo alle zusammen,
ich bin neu hier im Forum und habe auch gleich mal eine erste Frage.
Und zwar geht es um folgendes Problem:
Ich habe eine alte Gameboy-Cam an einen Mikrocontroller angeschlossen und kann damit pixelweise ein Bild auslesen. Als Ergebnis erhalte ich 128*128=16384 Pixelwerte, jeweils im Bereich von 0 bis 255.
Diese Werte sende ich dann via RS232 (serielle Schnittstelle) an den Computer und lese es mit Delphi aus. Die Einzelnen Werte der Pixel speichere ich zur Zeit noch provisorisch in einem Memo, damit ich auch immer sehe, was ankommt.
Diese einzelnen Pixelwerte aus der Memo lese ich dann Zeile für Zeile aus, wobei bei mir jeweilt eine Zeile den Wert eines Pixels enthällt. Den jeweils ausgelesenen Wert wandle ich dann in einen Grauwert um und zeichne das jeweilige Pixel mit:
Paintbox.Canvas.Pixels[x,y]:='Grauwert'
Das ganze wiederhole ich für alle 16384 Pixel und zusätzlich habe ich die Größe der PaintBox von 128x128 auf 256x256 vergrößert, sodass ich mit jedem Pixelgrauwert jeweils 4 Pixel der PaintBox beschreibe.
Das ganze funktioniert auch so und ich sehe tatsächlich ein Bild (nach langem Probieren).
Es ist allerdings so, das die jetzige Routine zum Zeichnen des Bildes sehr viel Zeit in Anspruch nimmt, 1s oder so. So das man regelrecht zuschauen kann, wie das Bild aufgebaut wird.
Jetzt meine Frage:
Gibt es eine Möglichkeit das Zeichnen zu beschleunigen?
Eine Idee, die ich hatte war, das ganze mit mehreren Threads zu machen. Allerdings kann ich von einem Thread aus nicht direkt die Pixel der PaintBox setzen, sodass die hinfällig ist.
Ich hoffe, das mir diesbezüglich jemand weiterhelfen kann.
Ich bedanke mich bereits im Voraus für jede Hilfe.
-----
mikro
|