Forum: Multimedia
Delphi
by Neutral General,
20. Jun 2007
...muss euch nochmal um Hilfe bitten bei der Sache:
Das ganze sieht jetzt so aus:
procedure FloodFill(ABmp: TBitmap; x,y: Integer; AColor: TColor; Border: TColor; var Map: TBoolmap);
var l,i: Integer;
r,g,b: Byte;
c: TColor;
begin
if Length(Map) = 0 then
begin
Forum: Multimedia
Delphi
by Neutral General,
19. Jun 2007
Ja ich muss es schon mit einem Array machen... Der Hintergrund ist nämlich mehrfarbig. Aber wie siehts mit meiner zweiten Frage aus: Warum ist mein Floodfill langsamer als das von Canvas (auch einfarbig!) ? Kann ich meins irgendwie schneller machen?
Forum: Multimedia
Delphi
by Neutral General,
19. Jun 2007
grml das hatte ich mir fast gedacht das es nicht einfacher geht... Geht das ganze FloodFillen eigentlich auch schneller? Hab das Gefühl das das FloodFill von Windows um einiges schneller ist...
Gruß
Neutral General
Forum: Multimedia
Delphi
by Neutral General,
19. Jun 2007
Hi,
Hätte nochmal ne Frage:
Ich fülle jetzt die Fläche mehrfarbig.. Also mit verschiedenen Helligkeiten der angegebenen Farbe. Und da funktioniert ja folgende Abbruchbedingung nicht mehr:
(ABmp.Canvas.Pixels <> AColor)
Wie mach ich das denn?
Gruß
Forum: Multimedia
Delphi
by Neutral General,
19. Jun 2007
Wie war das mit dem Wald den man vor lauter Bäumen nicht mehr sieht ? :mrgreen: :wall:
Danke :)
Gruß
Neutral General
Forum: Multimedia
Delphi
by Neutral General,
19. Jun 2007
Ok thx. Also ich habs jetzt so abgeändert:
procedure FloodFill(ABmp: TBitmap; x,y: Integer; AColor: TColor; Border: TColor);
begin
if (ABmp.Canvas.Pixels <> Border) and (ABmp.Canvas.Pixels <> AColor)
and (x <= ABmp.Width) and (x >= 0) and (y <= ABmp.Height) and (y >= 0)
then
begin
ABmp.Canvas.Pixels := AColor;
Forum: Multimedia
Delphi
by Neutral General,
19. Jun 2007
Ja das hatte ich mir auch schon gedacht aber ich hab die Fläche jetzt so eingegrenzt das sie nicht am Ende des Canvas ist sondern in der Mitte. Also ist die Abbruchbedingung auf jeden Fall erfüllt.. Wenn ich nur eine Richtung Rekursiv ausführe dann gehts.. Bei mehreren gibts nen Stack overflow.
Forum: Multimedia
Delphi
by Neutral General,
19. Jun 2007
Hi,
Ich benötige für mein Vorhaben eine FloodFill Procedure. Dazu hab ich erst mal eine "normale" programmiert.
Aber irgendwie bekomm ich dauernd nen Stack-Overflow... Wodran liegt denn das? Ich hab bei Wikipedia geguckt ob die das anders machen aber Wikipedia machts exakt genauso!
procedure FloodFill(ACanvas: TCanvas; x,y: Integer; AColor: TColor; Border: TColor);
begin
if...