Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Feststellen ob eine canvas komplett schwarz ist (https://www.delphipraxis.net/87537-feststellen-ob-eine-canvas-komplett-schwarz-ist.html)

alleinherrscher 1. Mär 2007 22:51


Feststellen ob eine canvas komplett schwarz ist
 
Hi@all

Sorry, dass ich schon wieder einen neuen Thread erstelle,
ich hoffe es ist vorerst der letzte!

Gibt es eine Möglichkeit zu überprüfen, ob die Canvas eines Bitmaps komplett schwarz ist, also ob alle Farbwerte gleich (bzw =0) sind?

Man könnte alle Pixel überprüfen aber das würde ja ewig dauern. Was ist mit Scanline? Gibts nicht noch etwas schnelleres, was am besten die CPU nicht belastet (ähnlich wie Bitblt was ja scheinbar im 2d Beschleuniger der Graka arbeitet).

Mit freundlichen Grüßen,
Alleinherrscher

bitsetter 1. Mär 2007 23:38

Re: Feststellen ob eine canvas komplett schwarz ist
 
Moin,

mit ScanLine könnte man es so machen:
Delphi-Quellcode:
function IsBlack(Bild: TBitmap): boolean;
var
   i: integer;
   Black: Array of Byte;
begin
  Bild.PixelFormat:= pf24bit;
  SetLength(Black, Bild.Width* 3);
  ZeroMemory(@Black[0], Length(Black));
  Result:= true;
  for i:= 0 to pred(Bild.Height) do
  begin
    Result:= CompareMem(Bild.ScanLine[i], @Black[0], Length(Black));
    if not Result then
      break;
  end;
end;
end;

alleinherrscher 2. Mär 2007 09:29

Re: Feststellen ob eine canvas komplett schwarz ist
 
Holla die Waldfee! Die Prozedur is aber hammer schnell! Habs mal mit gettickcount getestet, er wirft mir immer 0 als benötigte Zeit raus...

Besten Dank und schöne Grüße,
Michael


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz