Einzelnen Beitrag anzeigen

Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#8

Re: mit scanline bitmap auf farben scannen

  Alt 3. Feb 2009, 10:49
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.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat