Zitat von
DeddyH:
Die Funktion heißt aber "NotBlack" und arbeitet auch so.
Bei obigem Bild aber nicht, da müsste die Function so aussehen:
Delphi-Quellcode:
function NotBlack(bmp: TBitmap): Boolean;
const
PixelCountMax = 32768;
type
pRGBQuadArray = ^TRGBQuadArray;
TRGBQuadArray = ARRAY[0..PixelCountMax-1] OF TRGBQuad;
var
x, y : Integer;
Row : pRGBQuadArray;
begin
Result := False;
for y := 0 to bmp.Height -1
do begin
Row := bmp.Scanline[y];
for x := 0 To bmp.Width -1
do begin
Result := (Row[x].rgbBlue <> 0) or (Row[x].rgbGreen <> 0) or (Row[x].rgbRed <> 0);
if Result then Exit;
end;
end;
end;
Nachtrag:
Das Pixelformat ist hier pf32bit. Deshalb wird bei Scanline 8 bit zu wenig gelesen und die Function kommt tatsächlich gar nicht bis zu den andersfarbigen Pixeln. Das vierte Byte ist reserviert.