
Zitat von
omata:

Zitat von
Dunkel:
ToDos: Geschwindigkeit! ...
Schau dir doch mal Bitmap.ScanLine an, wenn du das anstelle von Canvas.Pixels verwendest, dann wird es kein Geschwindigkeitsproblem mehr geben.
Ist schon implementiert. Entweder mache ich da was falsch oder es bringt doch nicht so viel.
Delphi-Quellcode:
procedure TPCMDrawerWorker.ReadPictureData;
type
pixel = array[0..2] of byte;
var
p : ^pixel;
i: integer;
r, g, b, c: byte;
color, v: integer;
begin
p := fBitmap.ScanLine[fBitmapPosCounter];
for i := 0 to fBitmap.Width -1 do
begin
r := Byte(p^[0]);
g := Byte(p^[1]);
b := Byte(p^[2]);
if fReverseColors then
c := 255 - ((r+b+g) div 3)
else
c := ((r+b+g) div 3);
v:= Trunc(c / 255 * fAmplitude);
if v >= cIgnoreColorLower then
fPixelData[i].Amplitude := v
else
fPixelData[i].Amplitude := 0;
inc(p);
end;
Inc(fBitmapPosCounter);
end;
Multithreading (sprich das Aufteilen des Bildes in mehrere Abschnitte, welche dann autark bearbeitet werden) bringt auf meinem DualCore mit 2 Threads ungefähr 40 - 45 % mehr Geschwindigkeit. Immerhin...
Es ist zu wahr um schön zu sein...