Einzelnen Beitrag anzeigen

Benutzerbild von Delphi-Narr
Delphi-Narr

Registriert seit: 29. Aug 2009
Ort: Duisburg
437 Beiträge
 
Delphi 2007 Professional
 
#1

TBitmap32 in ByteArray (schneller) oder Alternative

  Alt 15. Apr 2013, 21:36
Hallo,

ich arbeite immer noch an meinem Plugin für die Logitech G19 und habe nun ein weiteres Problem, welches die Performance betrifft.
Die G19 DLL erlaubt es, ein 320x240 Bitmap auf den Bildschirm der Tastatur zu legen und das bis zu 60 mal pro Sekunde.
Bisher möchte ich lediglich eine Progressbar anzeigen lassen, welche ich zuvor auf ein Bitmap32 zeichne.
Allein das häufige Zeichnen lässt die CPU schon ordentlich arbeiten (5% bei einem AMD FX-8120, per Timer gesteuertes Neuzeichnen alle 30ms) und die
DLL Funktion will das Bitmap auch als Bytearray haben, welches 320*240*4 Bytes enthält.
Ein Pixel setzt sich dabei aus je 4 Bytes zusammen: B G R Alpha
Um das Bitmap jetzt in ein solches Array zu konvertieren wird jedes Mal eine Schleife über alle Pixel des Bitmaps durchlaufen und die Farben dann
in das Array geschrieben (Seit Kurzem gibts dabei jetzt eine Zugriffsverletzung, obwohl es bis eben noch klappte - Reboot wirds schon richten).
Bei diesem Verfahren rackert der Prozessor dann bei 12% und das ist für ein kleines Applet wesentlich zu viel!
Gibt es eine Alternative, die 320*240 Grafiken zu erstellen und diese als Bytearray zu formatieren, ohne dabei derartig Ressourcen zu verballern?

Viele Grüße!

Geändert von Delphi-Narr (15. Apr 2013 um 23:35 Uhr)
  Mit Zitat antworten Zitat