Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Pointer auf Daten einer TBitmap erhalten

  Alt 8. Okt 2011, 00:38
Das Array meiner letzen Zeile macht quasi nicht viel anderes, wie deine Rechnung x+(MaxX*y)

MyPixels[x + (MaxX * y)] = MyPixels + (x + (MaxX * y)) * 4 = MyPixels + (x + (MaxX * y))

MyArray[x, y] = MyArray[x][y] = (MyArray + x * 4)^ + y * 4 = (MyArray + x)^ + y

wobei die *4 nicht als eigenständige Operation (Assemblerbefehl) vorhanden sind, sondern in dem Addition-Befehl mit reinoptimiert sind, also beide jeweils 3 Assembler
Allerdings einmal MUL+ADD+ADD gegen ADD+MOV+ADD ... kommt also nur noch drauf an, was die CPU wie schnell abarbeitet.
(z * 4 = z shl 2)

Und es ist bei dem Array egal, in welcher Reihenfolge die Zeilen liegen.
Gut, dafür muß man hier am Anfang einmal alle ScanLines holen, wärend man bei dem Anderen nur die Letzte/Erste holen muß.


die Berechnungen basieren auf 32 Bit-Bildern
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat