die kochen doch alle nur mit Wasser
Bisher hab ich noch keine Alternative gesehen die einen signifikanten Vorteil bietet.
Selbst die Berechnung der Adressen zum direkten Zugriff ist nur marginal schneller.
Sourcecode zum damaligen Test
Delphi-Quellcode:
Var pic_Line : integer;
row : PRGB32Array;
pic_offset, pic_data : integer;
red_count : integer;
type
TRGB32 = packed record
B, G, R, A: Byte;
end;
TRGB32Array = packed array[0..MaxInt div SizeOf(TRGB32)-1] of TRGB32;
PRGB32Array = ^TRGB32Array;
implementation
{$R *.DFM}
procedure TForm1.Start(Sender: TObject);
var x, y, i: Integer;
begin
setlength(steps_adr,10);
if not openDialog1.Execute then exit;
image1.Picture.Bitmap.LoadFromFile(OpenDialog1.Filename);
with Image1.Picture.Bitmap do
begin
PixelFormat := pf32bit;
row := Scanline[0]; //start position
pic_Line := (Longint(Scanline[1]) - Longint(row)) div SizeOf(TRGB32); //direction
end;
count_red(Sender);
end;
procedure TForm1.count_red(Sender: TObject);
begin
pic_offset := Y * pic_Line; //offset
pic_data := Image1.Picture.Bitmap.Width - 1 + pic_offset; //data
for x := pic_offset to pic_data do
with row[x] do
begin
// B := 0;
// G := 0;
red_count := red_count + R;
// A := 0;
end;
Image1.Invalidate;
end;
end.