Was für ne CPU hast du? AUf meinem i5 @3GHZ
Hat die Ursprungsmethode(XE):
Debug: 30ms
Release: 8ms
Und so:
Delphi-Quellcode:
type
TRGBA = packed record
B, G, R, A: Byte;
end;
PRGBA = ^TRGBA;
TScanLine = array[0..100000] of TRGBA;
PScanLine = ^TScanLine;
function HasTransparentRGBAValues (const bm:TBitmap): Boolean;
var
x, z: Integer; RGBA: PScanLine;
LPixel: PRGBA;
begin
Result := FALSE;
RGBA := bm.Scanline[bm.Height-1];
z := bm.Width * bm.Height;
LPixel := @RGBA[0];
for x := 0 to z-1 do begin
if LPixel.A < 255 then
EXIT (TRUE);
Inc(LPixel, SizeOf(TRGBA));
end;
end;
Debug: 7ms
Release: 3ms
Seh da keinen bedarf für Hexenwerk optimierungen