Delphi-Quellcode:
try
legn:=integer(pic.scanline[1])-integer(pic.scanline[0]);
except
raise Exception.Create('
Error');
end;
p:=pic.scanline[0];
v:= pic.Height*(legn-1);
for h:= 0
to v
do
begin
p^[v] := Random(256);
end;
try
legn := Abs(Integer(pic.ScanLine[1]) -Integer(pic.ScanLine[0]));
except
raise Exception.Create('
Error');
end;
for h := 0
to pic.Height - 1
do
begin
P := pic.ScanLine[h];
for v := 0
to legn - 1
do
P^[v] := Random(256);
end;
das obere is langsamer als das untere wenn ich ales pixel des bildes bearbeite
könnte sich das ändern, wenn ich nur ein pixel pro zeile bearbeite?
und wenn ja gibts ne möglichkeit einen punkt, denn ich ändern will schnell im array zu finden? nicht das der vorsprung den das obere dann evtl.hat durch das suchen wieder aufgefressen wird.
P is ja ein bytearraay, wenn ich das umändere in ein zb 4byte array(wenns sowas gibt) kann ich dann den farbwert mit einmal auslesen?(also alle farben bei pf32bit)
dann wär ja auch theoritsch jeder punkt im array durch ein punkt auf dem bild uind müsste berechnet werden durch
P[x+("länge der zeile" * y))
beim oberen teil fang ich ja bei scanline[0] an und zähl dann raufwärst mach ich da was falsch weil mein bild wird trotzdem gefüllt?
ok ich weis jetzt warum der obere teil langsamer war
bei p^[v] := Random(256); is das v falsch da müsste ein h hin jetzt ist das schonmal beim kompletten schreiben schneller
kann es sein das scanline nur zum schreiben da ist?
irgendwie bekomm ich zugriffsfehler, wenn ich nach art des oberen beispiels den inhalt des pointer in einen integer lesen will