![]() |
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 |
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; |
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 18:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz