Witam.
Niby prosty algorytm, ale wypełnia mi tylko fragment figury.
Zaczynam od punktu 15,12, który jest wewnątrz prostokąta o narożnikach (10,10) i (20,20).
procedure flood_fill(pozycja: TPoint);
begin
if (Form1.Canvas.Pixels[pozycja.X, pozycja.Y] <> clBlack) then
begin
Form1.Canvas.Pixels[pozycja.X, pozycja.Y] := clBlack;
flood_fill(stos2.lewo(pozycja));
flood_fill(stos2.prawo(pozycja));
flood_fill(stos2.gora(pozycja));
flood_fill(stos2.dol(pozycja));
end;
end;
punkt.X := 15;
punkt.Y := 12;
flood_fill(punkt);
Funkcje:
function TStos.lewo(element : TPoint):Tpoint;
begin
element.X := element.X-1;
element.Y := element.Y;
Result := element;
end;
function TStos.prawo(element : TPoint):Tpoint;
begin
element.X := element.X+1;
element.Y := element.Y;
Result := element;
end;
function TStos.gora(element : TPoint):Tpoint;
begin
element.X := element.X;
element.Y := element.Y-1;
Result := element;
end;
function TStos.dol(element : TPoint):Tpoint;
begin
element.X := element.X;
element.Y := element.Y+1;
Result := element;
end;
Jak poprawić ten algorytm?